// export Game_Type ; export def_base_level , def_amount_of_people , def_initial_level , def_starting_resources , def_shipments_density , def_extra_oil_deposits , def_shared_vision , def_morale_flags , def_siberite_detection , def_amount_of_apemen , def_amount_of_tiger , def_people_respawning , def_siberite_bomb ; export is_depot , number_of_breastworks , number_of_people , initial_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , spawning_koef_of_apemen , spawning_koef_of_tiger , respawning_time_min , respawning_time_max ; export def_artefact_one , def_artefact_two , def_artefact_three , def_artefact_two_using , def_kings_age , def_public_score , def_builduptime ; export Side_Count , Team_Count , Player_Side , Player_Team , Side_Teams , Teams ; export Side_Positions , Side_Nations , Side_Names , Team_Names , Team_Game ; export depot_def , breastworks_def , start_def , extra_oil_deposits_locations , battle_flags_id , def_max_sides ; export commander ; var global_units , global_defined , soldiers_created ; function init_map ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// extra_oil_deposits_locations := [ [ 23 , 19 ] , [ 114 , 81 ] , [ 74 , 52 ] ] ;
   4: LD_ADDR_EXP 48
   8: PUSH
   9: LD_INT 23
  11: PUSH
  12: LD_INT 19
  14: PUSH
  15: EMPTY
  16: LIST
  17: LIST
  18: PUSH
  19: LD_INT 114
  21: PUSH
  22: LD_INT 81
  24: PUSH
  25: EMPTY
  26: LIST
  27: LIST
  28: PUSH
  29: LD_INT 74
  31: PUSH
  32: LD_INT 52
  34: PUSH
  35: EMPTY
  36: LIST
  37: LIST
  38: PUSH
  39: EMPTY
  40: LIST
  41: LIST
  42: LIST
  43: ST_TO_ADDR
// depot_def := [ [ 45 , 7 , 3 ] , [ 96 , 94 , 0 ] , [ 33 , 46 , 1 ] , [ 96 , 94 , 0 ] , ] ;
  44: LD_ADDR_EXP 45
  48: PUSH
  49: LD_INT 45
  51: PUSH
  52: LD_INT 7
  54: PUSH
  55: LD_INT 3
  57: PUSH
  58: EMPTY
  59: LIST
  60: LIST
  61: LIST
  62: PUSH
  63: LD_INT 96
  65: PUSH
  66: LD_INT 94
  68: PUSH
  69: LD_INT 0
  71: PUSH
  72: EMPTY
  73: LIST
  74: LIST
  75: LIST
  76: PUSH
  77: LD_INT 33
  79: PUSH
  80: LD_INT 46
  82: PUSH
  83: LD_INT 1
  85: PUSH
  86: EMPTY
  87: LIST
  88: LIST
  89: LIST
  90: PUSH
  91: LD_INT 96
  93: PUSH
  94: LD_INT 94
  96: PUSH
  97: LD_INT 0
  99: PUSH
 100: EMPTY
 101: LIST
 102: LIST
 103: LIST
 104: PUSH
 105: EMPTY
 106: LIST
 107: LIST
 108: LIST
 109: LIST
 110: ST_TO_ADDR
// start_def := [ [ 48 , 12 ] , [ 90 , 86 ] , [ 55 , 51 ] , [ 89 , 87 ] , ] ;
 111: LD_ADDR_EXP 47
 115: PUSH
 116: LD_INT 48
 118: PUSH
 119: LD_INT 12
 121: PUSH
 122: EMPTY
 123: LIST
 124: LIST
 125: PUSH
 126: LD_INT 90
 128: PUSH
 129: LD_INT 86
 131: PUSH
 132: EMPTY
 133: LIST
 134: LIST
 135: PUSH
 136: LD_INT 55
 138: PUSH
 139: LD_INT 51
 141: PUSH
 142: EMPTY
 143: LIST
 144: LIST
 145: PUSH
 146: LD_INT 89
 148: PUSH
 149: LD_INT 87
 151: PUSH
 152: EMPTY
 153: LIST
 154: LIST
 155: PUSH
 156: EMPTY
 157: LIST
 158: LIST
 159: LIST
 160: LIST
 161: ST_TO_ADDR
// breastworks_def := [ [ [ 43 , 30 , 0 ] , [ 59 , 32 , 5 ] , [ 71 , 24 , 5 ] ] , [ [ 67 , 82 , 2 ] , [ 79 , 74 , 2 ] , [ 99 , 75 , 3 ] ] , [ [ 30 , 33 , 0 ] , [ 57 , 49 , 1 ] , [ 52 , 58 , 2 ] ] , [ [ 67 , 82 , 2 ] , [ 79 , 74 , 2 ] , [ 99 , 75 , 3 ] ] , ] ;
 162: LD_ADDR_EXP 46
 166: PUSH
 167: LD_INT 43
 169: PUSH
 170: LD_INT 30
 172: PUSH
 173: LD_INT 0
 175: PUSH
 176: EMPTY
 177: LIST
 178: LIST
 179: LIST
 180: PUSH
 181: LD_INT 59
 183: PUSH
 184: LD_INT 32
 186: PUSH
 187: LD_INT 5
 189: PUSH
 190: EMPTY
 191: LIST
 192: LIST
 193: LIST
 194: PUSH
 195: LD_INT 71
 197: PUSH
 198: LD_INT 24
 200: PUSH
 201: LD_INT 5
 203: PUSH
 204: EMPTY
 205: LIST
 206: LIST
 207: LIST
 208: PUSH
 209: EMPTY
 210: LIST
 211: LIST
 212: LIST
 213: PUSH
 214: LD_INT 67
 216: PUSH
 217: LD_INT 82
 219: PUSH
 220: LD_INT 2
 222: PUSH
 223: EMPTY
 224: LIST
 225: LIST
 226: LIST
 227: PUSH
 228: LD_INT 79
 230: PUSH
 231: LD_INT 74
 233: PUSH
 234: LD_INT 2
 236: PUSH
 237: EMPTY
 238: LIST
 239: LIST
 240: LIST
 241: PUSH
 242: LD_INT 99
 244: PUSH
 245: LD_INT 75
 247: PUSH
 248: LD_INT 3
 250: PUSH
 251: EMPTY
 252: LIST
 253: LIST
 254: LIST
 255: PUSH
 256: EMPTY
 257: LIST
 258: LIST
 259: LIST
 260: PUSH
 261: LD_INT 30
 263: PUSH
 264: LD_INT 33
 266: PUSH
 267: LD_INT 0
 269: PUSH
 270: EMPTY
 271: LIST
 272: LIST
 273: LIST
 274: PUSH
 275: LD_INT 57
 277: PUSH
 278: LD_INT 49
 280: PUSH
 281: LD_INT 1
 283: PUSH
 284: EMPTY
 285: LIST
 286: LIST
 287: LIST
 288: PUSH
 289: LD_INT 52
 291: PUSH
 292: LD_INT 58
 294: PUSH
 295: LD_INT 2
 297: PUSH
 298: EMPTY
 299: LIST
 300: LIST
 301: LIST
 302: PUSH
 303: EMPTY
 304: LIST
 305: LIST
 306: LIST
 307: PUSH
 308: LD_INT 67
 310: PUSH
 311: LD_INT 82
 313: PUSH
 314: LD_INT 2
 316: PUSH
 317: EMPTY
 318: LIST
 319: LIST
 320: LIST
 321: PUSH
 322: LD_INT 79
 324: PUSH
 325: LD_INT 74
 327: PUSH
 328: LD_INT 2
 330: PUSH
 331: EMPTY
 332: LIST
 333: LIST
 334: LIST
 335: PUSH
 336: LD_INT 99
 338: PUSH
 339: LD_INT 75
 341: PUSH
 342: LD_INT 3
 344: PUSH
 345: EMPTY
 346: LIST
 347: LIST
 348: LIST
 349: PUSH
 350: EMPTY
 351: LIST
 352: LIST
 353: LIST
 354: PUSH
 355: EMPTY
 356: LIST
 357: LIST
 358: LIST
 359: LIST
 360: ST_TO_ADDR
// if not def_extra_oil_deposits then
 361: LD_EXP 7
 365: NOT
 366: IFFALSE 407
// for i in extra_oil_deposits_locations do
 368: LD_ADDR_VAR 0 2
 372: PUSH
 373: LD_EXP 48
 377: PUSH
 378: FOR_IN
 379: IFFALSE 405
// RemoveDepositXY ( i [ 1 ] , i [ 2 ] ) ;
 381: LD_VAR 0 2
 385: PUSH
 386: LD_INT 1
 388: ARRAY
 389: PPUSH
 390: LD_VAR 0 2
 394: PUSH
 395: LD_INT 2
 397: ARRAY
 398: PPUSH
 399: CALL_OW 63
 403: GO 378
 405: POP
 406: POP
// end ;
 407: LD_VAR 0 1
 411: RET
// function read_multiplayer_and_game_parameters ; var side , dep , br1 , br2 , br3 , un , i ; begin
 412: LD_INT 0
 414: PPUSH
 415: PPUSH
 416: PPUSH
 417: PPUSH
 418: PPUSH
 419: PPUSH
 420: PPUSH
 421: PPUSH
// if MultiPlayer then
 422: LD_OWVAR 4
 426: IFFALSE 500
// begin Game_Type = mp_game_type ;
 428: LD_ADDR_EXP 1
 432: PUSH
 433: LD_OWVAR 6
 437: ST_TO_ADDR
// Player_Side = mp_player_side ;
 438: LD_ADDR_EXP 36
 442: PUSH
 443: LD_OWVAR 7
 447: ST_TO_ADDR
// Player_Team = mp_player_team ;
 448: LD_ADDR_EXP 37
 452: PUSH
 453: LD_OWVAR 8
 457: ST_TO_ADDR
// Side_Positions = mp_sides_positions ;
 458: LD_ADDR_EXP 40
 462: PUSH
 463: LD_OWVAR 17
 467: ST_TO_ADDR
// Side_Teams = mp_sides_teams ;
 468: LD_ADDR_EXP 38
 472: PUSH
 473: LD_OWVAR 15
 477: ST_TO_ADDR
// Side_Nations = mp_sides_nations ;
 478: LD_ADDR_EXP 41
 482: PUSH
 483: LD_OWVAR 16
 487: ST_TO_ADDR
// Teams = mp_teams ;
 488: LD_ADDR_EXP 39
 492: PUSH
 493: LD_OWVAR 12
 497: ST_TO_ADDR
// end else
 498: GO 648
// begin Game_Type = 2 ;
 500: LD_ADDR_EXP 1
 504: PUSH
 505: LD_INT 2
 507: ST_TO_ADDR
// Player_Side = 3 ;
 508: LD_ADDR_EXP 36
 512: PUSH
 513: LD_INT 3
 515: ST_TO_ADDR
// Player_Team = 3 ;
 516: LD_ADDR_EXP 37
 520: PUSH
 521: LD_INT 3
 523: ST_TO_ADDR
// Side_Positions = [ 0 , 3 , 0 , 1 , 0 , 0 , 4 , 0 ] ;
 524: LD_ADDR_EXP 40
 528: PUSH
 529: LD_INT 0
 531: PUSH
 532: LD_INT 3
 534: PUSH
 535: LD_INT 0
 537: PUSH
 538: LD_INT 1
 540: PUSH
 541: LD_INT 0
 543: PUSH
 544: LD_INT 0
 546: PUSH
 547: LD_INT 4
 549: PUSH
 550: LD_INT 0
 552: PUSH
 553: EMPTY
 554: LIST
 555: LIST
 556: LIST
 557: LIST
 558: LIST
 559: LIST
 560: LIST
 561: LIST
 562: ST_TO_ADDR
// Side_Teams = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
 563: LD_ADDR_EXP 38
 567: PUSH
 568: LD_INT 0
 570: PUSH
 571: LD_INT 0
 573: PUSH
 574: LD_INT 0
 576: PUSH
 577: LD_INT 0
 579: PUSH
 580: LD_INT 0
 582: PUSH
 583: LD_INT 0
 585: PUSH
 586: LD_INT 0
 588: PUSH
 589: LD_INT 0
 591: PUSH
 592: EMPTY
 593: LIST
 594: LIST
 595: LIST
 596: LIST
 597: LIST
 598: LIST
 599: LIST
 600: LIST
 601: ST_TO_ADDR
// Side_Nations = [ 0 , 3 , 0 , 1 , 0 , 1 , 3 , 0 ] ;
 602: LD_ADDR_EXP 41
 606: PUSH
 607: LD_INT 0
 609: PUSH
 610: LD_INT 3
 612: PUSH
 613: LD_INT 0
 615: PUSH
 616: LD_INT 1
 618: PUSH
 619: LD_INT 0
 621: PUSH
 622: LD_INT 1
 624: PUSH
 625: LD_INT 3
 627: PUSH
 628: LD_INT 0
 630: PUSH
 631: EMPTY
 632: LIST
 633: LIST
 634: LIST
 635: LIST
 636: LIST
 637: LIST
 638: LIST
 639: LIST
 640: ST_TO_ADDR
// Teams = [ ] ;
 641: LD_ADDR_EXP 39
 645: PUSH
 646: EMPTY
 647: ST_TO_ADDR
// end ; Side_Count = ( Side_Positions diff [ 0 ] ) + 0 ;
 648: LD_ADDR_EXP 34
 652: PUSH
 653: LD_EXP 40
 657: PUSH
 658: LD_INT 0
 660: PUSH
 661: EMPTY
 662: LIST
 663: DIFF
 664: PUSH
 665: LD_INT 0
 667: PLUS
 668: ST_TO_ADDR
// Team_Count = ( Side_Teams diff [ 0 ] ) + 0 ;
 669: LD_ADDR_EXP 35
 673: PUSH
 674: LD_EXP 38
 678: PUSH
 679: LD_INT 0
 681: PUSH
 682: EMPTY
 683: LIST
 684: DIFF
 685: PUSH
 686: LD_INT 0
 688: PLUS
 689: ST_TO_ADDR
// if MultiPlayer then
 690: LD_OWVAR 4
 694: IFFALSE 958
// begin def_base_level = GetMultiplayerSetting ( 0 ) ;
 696: LD_ADDR_EXP 2
 700: PUSH
 701: LD_INT 0
 703: PPUSH
 704: CALL_OW 426
 708: ST_TO_ADDR
// def_amount_of_people = GetMultiplayerSetting ( 1 ) ;
 709: LD_ADDR_EXP 3
 713: PUSH
 714: LD_INT 1
 716: PPUSH
 717: CALL_OW 426
 721: ST_TO_ADDR
// def_initial_level = GetMultiplayerSetting ( 2 ) ;
 722: LD_ADDR_EXP 4
 726: PUSH
 727: LD_INT 2
 729: PPUSH
 730: CALL_OW 426
 734: ST_TO_ADDR
// def_starting_resources = GetMultiplayerSetting ( 3 ) ;
 735: LD_ADDR_EXP 5
 739: PUSH
 740: LD_INT 3
 742: PPUSH
 743: CALL_OW 426
 747: ST_TO_ADDR
// def_shipments_density = GetMultiplayerSetting ( 4 ) ;
 748: LD_ADDR_EXP 6
 752: PUSH
 753: LD_INT 4
 755: PPUSH
 756: CALL_OW 426
 760: ST_TO_ADDR
// def_extra_oil_deposits = GetMultiplayerSetting ( 5 ) ;
 761: LD_ADDR_EXP 7
 765: PUSH
 766: LD_INT 5
 768: PPUSH
 769: CALL_OW 426
 773: ST_TO_ADDR
// def_shared_vision = GetMultiplayerSetting ( 10 ) ;
 774: LD_ADDR_EXP 8
 778: PUSH
 779: LD_INT 10
 781: PPUSH
 782: CALL_OW 426
 786: ST_TO_ADDR
// def_morale_flags = GetMultiplayerSetting ( 11 ) ;
 787: LD_ADDR_EXP 9
 791: PUSH
 792: LD_INT 11
 794: PPUSH
 795: CALL_OW 426
 799: ST_TO_ADDR
// def_siberite_detection = GetMultiplayerSetting ( 12 ) ;
 800: LD_ADDR_EXP 10
 804: PUSH
 805: LD_INT 12
 807: PPUSH
 808: CALL_OW 426
 812: ST_TO_ADDR
// def_amount_of_apemen = GetMultiplayerSetting ( 13 ) ;
 813: LD_ADDR_EXP 11
 817: PUSH
 818: LD_INT 13
 820: PPUSH
 821: CALL_OW 426
 825: ST_TO_ADDR
// def_people_respawning = GetMultiplayerSetting ( 14 ) ;
 826: LD_ADDR_EXP 13
 830: PUSH
 831: LD_INT 14
 833: PPUSH
 834: CALL_OW 426
 838: ST_TO_ADDR
// def_siberite_bomb = GetMultiplayerSetting ( 15 ) ;
 839: LD_ADDR_EXP 14
 843: PUSH
 844: LD_INT 15
 846: PPUSH
 847: CALL_OW 426
 851: ST_TO_ADDR
// def_artefact_one = GetMultiplayerSetting ( 6 ) ;
 852: LD_ADDR_EXP 27
 856: PUSH
 857: LD_INT 6
 859: PPUSH
 860: CALL_OW 426
 864: ST_TO_ADDR
// def_artefact_two = GetMultiplayerSetting ( 7 ) ;
 865: LD_ADDR_EXP 28
 869: PUSH
 870: LD_INT 7
 872: PPUSH
 873: CALL_OW 426
 877: ST_TO_ADDR
// def_artefact_two_using = GetMultiplayerSetting ( 8 ) ;
 878: LD_ADDR_EXP 30
 882: PUSH
 883: LD_INT 8
 885: PPUSH
 886: CALL_OW 426
 890: ST_TO_ADDR
// def_artefact_three = GetMultiplayerSetting ( 9 ) ;
 891: LD_ADDR_EXP 29
 895: PUSH
 896: LD_INT 9
 898: PPUSH
 899: CALL_OW 426
 903: ST_TO_ADDR
// def_kings_age = GetMultiplayerSetting ( 16 ) ;
 904: LD_ADDR_EXP 31
 908: PUSH
 909: LD_INT 16
 911: PPUSH
 912: CALL_OW 426
 916: ST_TO_ADDR
// def_public_score = GetMultiplayerSetting ( 17 ) ;
 917: LD_ADDR_EXP 32
 921: PUSH
 922: LD_INT 17
 924: PPUSH
 925: CALL_OW 426
 929: ST_TO_ADDR
// def_amount_of_tiger = GetMultiplayerSetting ( 18 ) ;
 930: LD_ADDR_EXP 12
 934: PUSH
 935: LD_INT 18
 937: PPUSH
 938: CALL_OW 426
 942: ST_TO_ADDR
// def_builduptime = GetMultiplayerSetting ( 20 ) ;
 943: LD_ADDR_EXP 33
 947: PUSH
 948: LD_INT 20
 950: PPUSH
 951: CALL_OW 426
 955: ST_TO_ADDR
// end else
 956: GO 1122
// begin randomize ;
 958: CALL_OW 10
// def_base_level = 2 ;
 962: LD_ADDR_EXP 2
 966: PUSH
 967: LD_INT 2
 969: ST_TO_ADDR
// def_amount_of_people = 1 ;
 970: LD_ADDR_EXP 3
 974: PUSH
 975: LD_INT 1
 977: ST_TO_ADDR
// def_initial_level = 1 ;
 978: LD_ADDR_EXP 4
 982: PUSH
 983: LD_INT 1
 985: ST_TO_ADDR
// def_starting_resources = 2 ;
 986: LD_ADDR_EXP 5
 990: PUSH
 991: LD_INT 2
 993: ST_TO_ADDR
// def_shipments_density = 1 ;
 994: LD_ADDR_EXP 6
 998: PUSH
 999: LD_INT 1
1001: ST_TO_ADDR
// def_extra_oil_deposits = 0 ;
1002: LD_ADDR_EXP 7
1006: PUSH
1007: LD_INT 0
1009: ST_TO_ADDR
// def_shared_vision = 1 ;
1010: LD_ADDR_EXP 8
1014: PUSH
1015: LD_INT 1
1017: ST_TO_ADDR
// def_morale_flags = 1 ;
1018: LD_ADDR_EXP 9
1022: PUSH
1023: LD_INT 1
1025: ST_TO_ADDR
// def_siberite_detection = 1 ;
1026: LD_ADDR_EXP 10
1030: PUSH
1031: LD_INT 1
1033: ST_TO_ADDR
// def_amount_of_apemen = 3 ;
1034: LD_ADDR_EXP 11
1038: PUSH
1039: LD_INT 3
1041: ST_TO_ADDR
// def_amount_of_tiger = 3 ;
1042: LD_ADDR_EXP 12
1046: PUSH
1047: LD_INT 3
1049: ST_TO_ADDR
// def_people_respawning = 2 ;
1050: LD_ADDR_EXP 13
1054: PUSH
1055: LD_INT 2
1057: ST_TO_ADDR
// def_siberite_bomb = 0 ;
1058: LD_ADDR_EXP 14
1062: PUSH
1063: LD_INT 0
1065: ST_TO_ADDR
// def_artefact_one = 0 ;
1066: LD_ADDR_EXP 27
1070: PUSH
1071: LD_INT 0
1073: ST_TO_ADDR
// def_artefact_two = 0 ;
1074: LD_ADDR_EXP 28
1078: PUSH
1079: LD_INT 0
1081: ST_TO_ADDR
// def_artefact_two_using = 2 ;
1082: LD_ADDR_EXP 30
1086: PUSH
1087: LD_INT 2
1089: ST_TO_ADDR
// def_artefact_three = 0 ;
1090: LD_ADDR_EXP 29
1094: PUSH
1095: LD_INT 0
1097: ST_TO_ADDR
// def_kings_age = 0 ;
1098: LD_ADDR_EXP 31
1102: PUSH
1103: LD_INT 0
1105: ST_TO_ADDR
// def_public_score = 0 ;
1106: LD_ADDR_EXP 32
1110: PUSH
1111: LD_INT 0
1113: ST_TO_ADDR
// def_builduptime = 1 ;
1114: LD_ADDR_EXP 33
1118: PUSH
1119: LD_INT 1
1121: ST_TO_ADDR
// end ; is_depot = [ 0 , 1 , 1 , 1 ] [ def_base_level + 1 ] ;
1122: LD_ADDR_EXP 15
1126: PUSH
1127: LD_INT 0
1129: PUSH
1130: LD_INT 1
1132: PUSH
1133: LD_INT 1
1135: PUSH
1136: LD_INT 1
1138: PUSH
1139: EMPTY
1140: LIST
1141: LIST
1142: LIST
1143: LIST
1144: PUSH
1145: LD_EXP 2
1149: PUSH
1150: LD_INT 1
1152: PLUS
1153: ARRAY
1154: ST_TO_ADDR
// number_of_breastworks = [ 0 , 0 , 2 , 3 ] [ def_base_level + 1 ] ;
1155: LD_ADDR_EXP 16
1159: PUSH
1160: LD_INT 0
1162: PUSH
1163: LD_INT 0
1165: PUSH
1166: LD_INT 2
1168: PUSH
1169: LD_INT 3
1171: PUSH
1172: EMPTY
1173: LIST
1174: LIST
1175: LIST
1176: LIST
1177: PUSH
1178: LD_EXP 2
1182: PUSH
1183: LD_INT 1
1185: PLUS
1186: ARRAY
1187: ST_TO_ADDR
// number_of_people = [ 6 , 9 , 12 , 15 ] [ def_amount_of_people + 1 ] ;
1188: LD_ADDR_EXP 17
1192: PUSH
1193: LD_INT 6
1195: PUSH
1196: LD_INT 9
1198: PUSH
1199: LD_INT 12
1201: PUSH
1202: LD_INT 15
1204: PUSH
1205: EMPTY
1206: LIST
1207: LIST
1208: LIST
1209: LIST
1210: PUSH
1211: LD_EXP 3
1215: PUSH
1216: LD_INT 1
1218: PLUS
1219: ARRAY
1220: ST_TO_ADDR
// initial_level = [ 2 , 3 , 4 , 5 ] [ def_initial_level + 1 ] ;
1221: LD_ADDR_EXP 18
1225: PUSH
1226: LD_INT 2
1228: PUSH
1229: LD_INT 3
1231: PUSH
1232: LD_INT 4
1234: PUSH
1235: LD_INT 5
1237: PUSH
1238: EMPTY
1239: LIST
1240: LIST
1241: LIST
1242: LIST
1243: PUSH
1244: LD_EXP 4
1248: PUSH
1249: LD_INT 1
1251: PLUS
1252: ARRAY
1253: ST_TO_ADDR
// starting_resources = [ [ 0 , 0 , 0 ] , [ 30 , 0 , 0 ] , [ 50 , 20 , 0 ] , [ 80 , 40 , 20 ] ] [ def_starting_resources + 1 ] ;
1254: LD_ADDR_EXP 20
1258: PUSH
1259: LD_INT 0
1261: PUSH
1262: LD_INT 0
1264: PUSH
1265: LD_INT 0
1267: PUSH
1268: EMPTY
1269: LIST
1270: LIST
1271: LIST
1272: PUSH
1273: LD_INT 30
1275: PUSH
1276: LD_INT 0
1278: PUSH
1279: LD_INT 0
1281: PUSH
1282: EMPTY
1283: LIST
1284: LIST
1285: LIST
1286: PUSH
1287: LD_INT 50
1289: PUSH
1290: LD_INT 20
1292: PUSH
1293: LD_INT 0
1295: PUSH
1296: EMPTY
1297: LIST
1298: LIST
1299: LIST
1300: PUSH
1301: LD_INT 80
1303: PUSH
1304: LD_INT 40
1306: PUSH
1307: LD_INT 20
1309: PUSH
1310: EMPTY
1311: LIST
1312: LIST
1313: LIST
1314: PUSH
1315: EMPTY
1316: LIST
1317: LIST
1318: LIST
1319: LIST
1320: PUSH
1321: LD_EXP 5
1325: PUSH
1326: LD_INT 1
1328: PLUS
1329: ARRAY
1330: ST_TO_ADDR
// starting_crates = [ [ 10 ] , [ 7 , 14 ] , [ 6 , 12 , 18 ] , [ 5 , 10 , 15 , 20 ] ] [ def_starting_resources + 1 ] ;
1331: LD_ADDR_EXP 19
1335: PUSH
1336: LD_INT 10
1338: PUSH
1339: EMPTY
1340: LIST
1341: PUSH
1342: LD_INT 7
1344: PUSH
1345: LD_INT 14
1347: PUSH
1348: EMPTY
1349: LIST
1350: LIST
1351: PUSH
1352: LD_INT 6
1354: PUSH
1355: LD_INT 12
1357: PUSH
1358: LD_INT 18
1360: PUSH
1361: EMPTY
1362: LIST
1363: LIST
1364: LIST
1365: PUSH
1366: LD_INT 5
1368: PUSH
1369: LD_INT 10
1371: PUSH
1372: LD_INT 15
1374: PUSH
1375: LD_INT 20
1377: PUSH
1378: EMPTY
1379: LIST
1380: LIST
1381: LIST
1382: LIST
1383: PUSH
1384: EMPTY
1385: LIST
1386: LIST
1387: LIST
1388: LIST
1389: PUSH
1390: LD_EXP 5
1394: PUSH
1395: LD_INT 1
1397: PLUS
1398: ARRAY
1399: ST_TO_ADDR
// shipments_density = [ 20 , 30 , 40 ] [ def_shipments_density + 1 ] ;
1400: LD_ADDR_EXP 21
1404: PUSH
1405: LD_INT 20
1407: PUSH
1408: LD_INT 30
1410: PUSH
1411: LD_INT 40
1413: PUSH
1414: EMPTY
1415: LIST
1416: LIST
1417: LIST
1418: PUSH
1419: LD_EXP 6
1423: PUSH
1424: LD_INT 1
1426: PLUS
1427: ARRAY
1428: ST_TO_ADDR
// spawning_koef_of_apemen = [ 0 , 165 , 140 , 115 ] [ def_amount_of_apemen + 1 ] ;
1429: LD_ADDR_EXP 23
1433: PUSH
1434: LD_INT 0
1436: PUSH
1437: LD_INT 165
1439: PUSH
1440: LD_INT 140
1442: PUSH
1443: LD_INT 115
1445: PUSH
1446: EMPTY
1447: LIST
1448: LIST
1449: LIST
1450: LIST
1451: PUSH
1452: LD_EXP 11
1456: PUSH
1457: LD_INT 1
1459: PLUS
1460: ARRAY
1461: ST_TO_ADDR
// spawning_koef_of_tiger = [ 0 , 165 , 140 , 115 ] [ def_amount_of_tiger + 1 ] ;
1462: LD_ADDR_EXP 24
1466: PUSH
1467: LD_INT 0
1469: PUSH
1470: LD_INT 165
1472: PUSH
1473: LD_INT 140
1475: PUSH
1476: LD_INT 115
1478: PUSH
1479: EMPTY
1480: LIST
1481: LIST
1482: LIST
1483: LIST
1484: PUSH
1485: LD_EXP 12
1489: PUSH
1490: LD_INT 1
1492: PLUS
1493: ARRAY
1494: ST_TO_ADDR
// respawning_time_min = [ 0 0$0 , 6 6$00 , 1 1$00 ] [ def_people_respawning + 1 ] ;
1495: LD_ADDR_EXP 25
1499: PUSH
1500: LD_INT 0
1502: PUSH
1503: LD_INT 12600
1505: PUSH
1506: LD_INT 2100
1508: PUSH
1509: EMPTY
1510: LIST
1511: LIST
1512: LIST
1513: PUSH
1514: LD_EXP 13
1518: PUSH
1519: LD_INT 1
1521: PLUS
1522: ARRAY
1523: ST_TO_ADDR
// respawning_time_max = [ 0 0$0 , 10 10$00 , 2 2$00 ] [ def_people_respawning + 1 ] ;
1524: LD_ADDR_EXP 26
1528: PUSH
1529: LD_INT 0
1531: PUSH
1532: LD_INT 21000
1534: PUSH
1535: LD_INT 4200
1537: PUSH
1538: EMPTY
1539: LIST
1540: LIST
1541: LIST
1542: PUSH
1543: LD_EXP 13
1547: PUSH
1548: LD_INT 1
1550: PLUS
1551: ARRAY
1552: ST_TO_ADDR
// morale_decreasing_time = [ - 1 , 0 0$10 , 0 0$20 , 0 0$40 , 0 0$0 ] [ def_morale_flags + 1 ] ;
1553: LD_ADDR_EXP 22
1557: PUSH
1558: LD_INT 1
1560: NEG
1561: PUSH
1562: LD_INT 350
1564: PUSH
1565: LD_INT 700
1567: PUSH
1568: LD_INT 1400
1570: PUSH
1571: LD_INT 0
1573: PUSH
1574: EMPTY
1575: LIST
1576: LIST
1577: LIST
1578: LIST
1579: LIST
1580: PUSH
1581: LD_EXP 9
1585: PUSH
1586: LD_INT 1
1588: PLUS
1589: ARRAY
1590: ST_TO_ADDR
// battle_flags_id = [ ] ;
1591: LD_ADDR_EXP 49
1595: PUSH
1596: EMPTY
1597: ST_TO_ADDR
// if def_builduptime > 0 then
1598: LD_EXP 33
1602: PUSH
1603: LD_INT 0
1605: GREATER
1606: IFFALSE 1616
// inbuildup := true ;
1608: LD_ADDR_EXP 52
1612: PUSH
1613: LD_INT 1
1615: ST_TO_ADDR
// end ;
1616: LD_VAR 0 1
1620: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
1621: LD_INT 0
1623: PPUSH
1624: PPUSH
1625: PPUSH
// Team_Game := 0 ;
1626: LD_ADDR_EXP 44
1630: PUSH
1631: LD_INT 0
1633: ST_TO_ADDR
// for i = 1 to 8 do
1634: LD_ADDR_VAR 0 2
1638: PUSH
1639: DOUBLE
1640: LD_INT 1
1642: DEC
1643: ST_TO_ADDR
1644: LD_INT 8
1646: PUSH
1647: FOR_TO
1648: IFFALSE 1674
// Team_Game := Team_Game + Side_Teams [ i ] ;
1650: LD_ADDR_EXP 44
1654: PUSH
1655: LD_EXP 44
1659: PUSH
1660: LD_EXP 38
1664: PUSH
1665: LD_VAR 0 2
1669: ARRAY
1670: PLUS
1671: ST_TO_ADDR
1672: GO 1647
1674: POP
1675: POP
// if not Team_Game then
1676: LD_EXP 44
1680: NOT
1681: IFFALSE 1693
// Team_Game := false else
1683: LD_ADDR_EXP 44
1687: PUSH
1688: LD_INT 0
1690: ST_TO_ADDR
1691: GO 1701
// Team_Game := true ;
1693: LD_ADDR_EXP 44
1697: PUSH
1698: LD_INT 1
1700: ST_TO_ADDR
// if not Team_Game then
1701: LD_EXP 44
1705: NOT
1706: IFFALSE 1804
// begin for i = 1 to 8 do
1708: LD_ADDR_VAR 0 2
1712: PUSH
1713: DOUBLE
1714: LD_INT 1
1716: DEC
1717: ST_TO_ADDR
1718: LD_INT 8
1720: PUSH
1721: FOR_TO
1722: IFFALSE 1800
// for j = 1 to 8 do
1724: LD_ADDR_VAR 0 3
1728: PUSH
1729: DOUBLE
1730: LD_INT 1
1732: DEC
1733: ST_TO_ADDR
1734: LD_INT 8
1736: PUSH
1737: FOR_TO
1738: IFFALSE 1796
// if i <> j then
1740: LD_VAR 0 2
1744: PUSH
1745: LD_VAR 0 3
1749: NONEQUAL
1750: IFFALSE 1774
// SetAttitude ( i , j , att_neutral , true ) else
1752: LD_VAR 0 2
1756: PPUSH
1757: LD_VAR 0 3
1761: PPUSH
1762: LD_INT 0
1764: PPUSH
1765: LD_INT 1
1767: PPUSH
1768: CALL_OW 80
1772: GO 1794
// SetAttitude ( i , j , att_friend , true ) ;
1774: LD_VAR 0 2
1778: PPUSH
1779: LD_VAR 0 3
1783: PPUSH
1784: LD_INT 1
1786: PPUSH
1787: LD_INT 1
1789: PPUSH
1790: CALL_OW 80
1794: GO 1737
1796: POP
1797: POP
1798: GO 1721
1800: POP
1801: POP
// end else
1802: GO 1979
// begin if def_shared_vision then
1804: LD_EXP 8
1808: IFFALSE 1873
// begin for i in Teams do
1810: LD_ADDR_VAR 0 2
1814: PUSH
1815: LD_EXP 39
1819: PUSH
1820: FOR_IN
1821: IFFALSE 1871
// for j = 2 to i do
1823: LD_ADDR_VAR 0 3
1827: PUSH
1828: DOUBLE
1829: LD_INT 2
1831: DEC
1832: ST_TO_ADDR
1833: LD_VAR 0 2
1837: PUSH
1838: FOR_TO
1839: IFFALSE 1867
// ChangeSideFog ( i [ j ] , i [ 1 ] ) ;
1841: LD_VAR 0 2
1845: PUSH
1846: LD_VAR 0 3
1850: ARRAY
1851: PPUSH
1852: LD_VAR 0 2
1856: PUSH
1857: LD_INT 1
1859: ARRAY
1860: PPUSH
1861: CALL_OW 343
1865: GO 1838
1867: POP
1868: POP
1869: GO 1820
1871: POP
1872: POP
// end ; for i = 1 to 8 do
1873: LD_ADDR_VAR 0 2
1877: PUSH
1878: DOUBLE
1879: LD_INT 1
1881: DEC
1882: ST_TO_ADDR
1883: LD_INT 8
1885: PUSH
1886: FOR_TO
1887: IFFALSE 1977
// for j = 1 to 8 do
1889: LD_ADDR_VAR 0 3
1893: PUSH
1894: DOUBLE
1895: LD_INT 1
1897: DEC
1898: ST_TO_ADDR
1899: LD_INT 8
1901: PUSH
1902: FOR_TO
1903: IFFALSE 1973
// if Side_Teams [ i ] = Side_Teams [ j ] then
1905: LD_EXP 38
1909: PUSH
1910: LD_VAR 0 2
1914: ARRAY
1915: PUSH
1916: LD_EXP 38
1920: PUSH
1921: LD_VAR 0 3
1925: ARRAY
1926: EQUAL
1927: IFFALSE 1951
// SetAttitude ( i , j , att_friend , true ) else
1929: LD_VAR 0 2
1933: PPUSH
1934: LD_VAR 0 3
1938: PPUSH
1939: LD_INT 1
1941: PPUSH
1942: LD_INT 1
1944: PPUSH
1945: CALL_OW 80
1949: GO 1971
// SetAttitude ( i , j , att_enemy , true ) ;
1951: LD_VAR 0 2
1955: PPUSH
1956: LD_VAR 0 3
1960: PPUSH
1961: LD_INT 2
1963: PPUSH
1964: LD_INT 1
1966: PPUSH
1967: CALL_OW 80
1971: GO 1902
1973: POP
1974: POP
1975: GO 1886
1977: POP
1978: POP
// end ; end ;
1979: LD_VAR 0 1
1983: RET
// function prepare_people ( side , count , cl , x , y , r , var commander ) ; var i , j , un ; begin
1984: LD_INT 0
1986: PPUSH
1987: PPUSH
1988: PPUSH
1989: PPUSH
// result := [ ] ;
1990: LD_ADDR_VAR 0 8
1994: PUSH
1995: EMPTY
1996: ST_TO_ADDR
// for i := 1 to count do
1997: LD_ADDR_VAR 0 9
2001: PUSH
2002: DOUBLE
2003: LD_INT 1
2005: DEC
2006: ST_TO_ADDR
2007: LD_VAR 0 2
2011: PUSH
2012: FOR_TO
2013: IFFALSE 2407
// begin uc_direction := Rand ( 0 , 5 ) ;
2015: LD_ADDR_OWVAR 24
2019: PUSH
2020: LD_INT 0
2022: PPUSH
2023: LD_INT 5
2025: PPUSH
2026: CALL_OW 12
2030: ST_TO_ADDR
// if commander then
2031: LD_FROM_VAR 0 7
2035: IFFALSE 2144
// begin hc_name := mp_sides_players_names [ side ] ;
2037: LD_ADDR_OWVAR 26
2041: PUSH
2042: LD_OWVAR 19
2046: PUSH
2047: LD_VAR 0 1
2051: ARRAY
2052: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , initial_level + 2 ) ;
2053: LD_INT 1
2055: PPUSH
2056: LD_INT 2
2058: PPUSH
2059: CALL_OW 12
2063: PPUSH
2064: LD_VAR 0 3
2068: PPUSH
2069: LD_EXP 18
2073: PUSH
2074: LD_INT 2
2076: PLUS
2077: PPUSH
2078: CALL_OW 380
// hc_importance := 105 ;
2082: LD_ADDR_OWVAR 32
2086: PUSH
2087: LD_INT 105
2089: ST_TO_ADDR
// commander := false ;
2090: LD_VAR 0 7
2094: PUSH
2095: LD_INT 0
2097: ST_TO_ADDR
// if Multiplayer then
2098: LD_OWVAR 4
2102: IFFALSE 2142
// begin hc_gallery := MULTIAVATARS ;
2104: LD_ADDR_OWVAR 33
2108: PUSH
2109: LD_STRING MULTIAVATARS
2111: ST_TO_ADDR
// hc_face_number := Multiplayer_GetPlayerSideNum ( Side ) ;
2112: LD_ADDR_OWVAR 34
2116: PUSH
2117: LD_VAR 0 1
2121: PPUSH
2122: CALL_OW 525
2126: ST_TO_ADDR
// hc_sex := Multiplayer_GetPlayerSex ( Side ) ;
2127: LD_ADDR_OWVAR 27
2131: PUSH
2132: LD_VAR 0 1
2136: PPUSH
2137: CALL_OW 526
2141: ST_TO_ADDR
// end ; end else
2142: GO 2207
// begin hc_name :=  ;
2144: LD_ADDR_OWVAR 26
2148: PUSH
2149: LD_STRING 
2151: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , initial_level ) ;
2152: LD_INT 1
2154: PPUSH
2155: LD_INT 2
2157: PPUSH
2158: CALL_OW 12
2162: PPUSH
2163: LD_VAR 0 3
2167: PPUSH
2168: LD_EXP 18
2172: PPUSH
2173: CALL_OW 380
// hc_importance := 0 ;
2177: LD_ADDR_OWVAR 32
2181: PUSH
2182: LD_INT 0
2184: ST_TO_ADDR
// if Multiplayer then
2185: LD_OWVAR 4
2189: IFFALSE 2207
// begin hc_gallery :=  ;
2191: LD_ADDR_OWVAR 33
2195: PUSH
2196: LD_STRING 
2198: ST_TO_ADDR
// hc_face_number := 0 ;
2199: LD_ADDR_OWVAR 34
2203: PUSH
2204: LD_INT 0
2206: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
2207: LD_ADDR_VAR 0 11
2211: PUSH
2212: CALL_OW 44
2216: ST_TO_ADDR
// if global_defined then
2217: LD_LOC 2
2221: IFFALSE 2359
// begin j := i ;
2223: LD_ADDR_VAR 0 10
2227: PUSH
2228: LD_VAR 0 9
2232: ST_TO_ADDR
// if cl = class_soldier then
2233: LD_VAR 0 3
2237: PUSH
2238: LD_INT 1
2240: EQUAL
2241: IFFALSE 2259
// j := i + soldiers_created ;
2243: LD_ADDR_VAR 0 10
2247: PUSH
2248: LD_VAR 0 9
2252: PUSH
2253: LD_LOC 3
2257: PLUS
2258: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
2259: LD_LOC 1
2263: PUSH
2264: LD_VAR 0 3
2268: ARRAY
2269: PUSH
2270: LD_VAR 0 10
2274: ARRAY
2275: PPUSH
2276: LD_VAR 0 11
2280: PPUSH
2281: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
2285: LD_VAR 0 11
2289: PPUSH
2290: LD_INT 2
2292: PPUSH
2293: LD_LOC 1
2297: PUSH
2298: LD_VAR 0 3
2302: ARRAY
2303: PUSH
2304: LD_VAR 0 10
2308: ARRAY
2309: PPUSH
2310: LD_INT 2
2312: PPUSH
2313: CALL_OW 260
2317: PPUSH
2318: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
2322: LD_VAR 0 11
2326: PPUSH
2327: LD_INT 1
2329: PPUSH
2330: LD_LOC 1
2334: PUSH
2335: LD_VAR 0 3
2339: ARRAY
2340: PUSH
2341: LD_VAR 0 10
2345: ARRAY
2346: PPUSH
2347: LD_INT 1
2349: PPUSH
2350: CALL_OW 260
2354: PPUSH
2355: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
2359: LD_VAR 0 11
2363: PPUSH
2364: LD_VAR 0 4
2368: PPUSH
2369: LD_VAR 0 5
2373: PPUSH
2374: LD_VAR 0 6
2378: PPUSH
2379: LD_INT 0
2381: PPUSH
2382: CALL_OW 50
// result := result ^ [ un ] ;
2386: LD_ADDR_VAR 0 8
2390: PUSH
2391: LD_VAR 0 8
2395: PUSH
2396: LD_VAR 0 11
2400: PUSH
2401: EMPTY
2402: LIST
2403: ADD
2404: ST_TO_ADDR
// end ;
2405: GO 2012
2407: POP
2408: POP
// if not global_defined then
2409: LD_LOC 2
2413: NOT
2414: IFFALSE 2476
// if cl = class_soldier and global_units then
2416: LD_VAR 0 3
2420: PUSH
2421: LD_INT 1
2423: EQUAL
2424: PUSH
2425: LD_LOC 1
2429: AND
2430: IFFALSE 2457
// global_units := [ global_units [ 1 ] ^ result ] else
2432: LD_ADDR_LOC 1
2436: PUSH
2437: LD_LOC 1
2441: PUSH
2442: LD_INT 1
2444: ARRAY
2445: PUSH
2446: LD_VAR 0 8
2450: ADD
2451: PUSH
2452: EMPTY
2453: LIST
2454: ST_TO_ADDR
2455: GO 2476
// global_units := global_units ^ [ result ] end ;
2457: LD_ADDR_LOC 1
2461: PUSH
2462: LD_LOC 1
2466: PUSH
2467: LD_VAR 0 8
2471: PUSH
2472: EMPTY
2473: LIST
2474: ADD
2475: ST_TO_ADDR
2476: LD_VAR 0 8
2480: RET
// function prepare_side ( side ) ; var pos , x , y , i , r , sol , br , dep , neng , nsci , nmech , nsol ; begin
2481: LD_INT 0
2483: PPUSH
2484: PPUSH
2485: PPUSH
2486: PPUSH
2487: PPUSH
2488: PPUSH
2489: PPUSH
2490: PPUSH
2491: PPUSH
2492: PPUSH
2493: PPUSH
2494: PPUSH
2495: PPUSH
// pos := Side_Positions [ side ] ;
2496: LD_ADDR_VAR 0 3
2500: PUSH
2501: LD_EXP 40
2505: PUSH
2506: LD_VAR 0 1
2510: ARRAY
2511: ST_TO_ADDR
// if not def_siberite_bomb then
2512: LD_EXP 14
2516: NOT
2517: IFFALSE 2554
// for i = 1 to 8 do
2519: LD_ADDR_VAR 0 6
2523: PUSH
2524: DOUBLE
2525: LD_INT 1
2527: DEC
2528: ST_TO_ADDR
2529: LD_INT 8
2531: PUSH
2532: FOR_TO
2533: IFFALSE 2552
// SetTech ( tech_SibFiss , i , state_disabled ) ;
2535: LD_INT 25
2537: PPUSH
2538: LD_VAR 0 6
2542: PPUSH
2543: LD_INT 0
2545: PPUSH
2546: CALL_OW 322
2550: GO 2532
2552: POP
2553: POP
// uc_nation := Side_Nations [ side ] ;
2554: LD_ADDR_OWVAR 21
2558: PUSH
2559: LD_EXP 41
2563: PUSH
2564: LD_VAR 0 1
2568: ARRAY
2569: ST_TO_ADDR
// uc_side := side ;
2570: LD_ADDR_OWVAR 20
2574: PUSH
2575: LD_VAR 0 1
2579: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
2580: LD_ADDR_VAR 0 4
2584: PUSH
2585: LD_EXP 45
2589: PUSH
2590: LD_VAR 0 3
2594: ARRAY
2595: PUSH
2596: LD_INT 1
2598: ARRAY
2599: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
2600: LD_ADDR_VAR 0 5
2604: PUSH
2605: LD_EXP 45
2609: PUSH
2610: LD_VAR 0 3
2614: ARRAY
2615: PUSH
2616: LD_INT 2
2618: ARRAY
2619: ST_TO_ADDR
// if is_depot then
2620: LD_EXP 15
2624: IFFALSE 2749
// begin bc_type = b_depot ;
2626: LD_ADDR_OWVAR 42
2630: PUSH
2631: LD_INT 0
2633: ST_TO_ADDR
// dep := CreateAndPlaceBuildingXYD ( x , y , Depot_Def [ pos ] [ 3 ] ) ;
2634: LD_ADDR_VAR 0 10
2638: PUSH
2639: LD_VAR 0 4
2643: PPUSH
2644: LD_VAR 0 5
2648: PPUSH
2649: LD_EXP 45
2653: PUSH
2654: LD_VAR 0 3
2658: ARRAY
2659: PUSH
2660: LD_INT 3
2662: ARRAY
2663: PPUSH
2664: CALL_OW 47
2668: ST_TO_ADDR
// SetResourceType ( GetBase ( dep ) , mat_cans , starting_resources [ mat_cans ] ) ;
2669: LD_VAR 0 10
2673: PPUSH
2674: CALL_OW 274
2678: PPUSH
2679: LD_INT 1
2681: PPUSH
2682: LD_EXP 20
2686: PUSH
2687: LD_INT 1
2689: ARRAY
2690: PPUSH
2691: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_oil , starting_resources [ mat_oil ] ) ;
2695: LD_VAR 0 10
2699: PPUSH
2700: CALL_OW 274
2704: PPUSH
2705: LD_INT 2
2707: PPUSH
2708: LD_EXP 20
2712: PUSH
2713: LD_INT 2
2715: ARRAY
2716: PPUSH
2717: CALL_OW 277
// SetResourceType ( GetBase ( result ) , mat_siberit , starting_resources [ mat_siberit ] ) ;
2721: LD_VAR 0 2
2725: PPUSH
2726: CALL_OW 274
2730: PPUSH
2731: LD_INT 3
2733: PPUSH
2734: LD_EXP 20
2738: PUSH
2739: LD_INT 3
2741: ARRAY
2742: PPUSH
2743: CALL_OW 277
// end else
2747: GO 2893
// begin for i := 1 to 3 do
2749: LD_ADDR_VAR 0 6
2753: PUSH
2754: DOUBLE
2755: LD_INT 1
2757: DEC
2758: ST_TO_ADDR
2759: LD_INT 3
2761: PUSH
2762: FOR_TO
2763: IFFALSE 2891
// begin r := starting_resources [ i ] ;
2765: LD_ADDR_VAR 0 7
2769: PUSH
2770: LD_EXP 20
2774: PUSH
2775: LD_VAR 0 6
2779: ARRAY
2780: ST_TO_ADDR
// while r >= 10 do
2781: LD_VAR 0 7
2785: PUSH
2786: LD_INT 10
2788: GREATEREQUAL
2789: IFFALSE 2889
// if r > 50 then
2791: LD_VAR 0 7
2795: PUSH
2796: LD_INT 50
2798: GREATER
2799: IFFALSE 2845
// begin CreateResourcesXYR ( i , 5 , x , y , 4 , false ) ;
2801: LD_VAR 0 6
2805: PPUSH
2806: LD_INT 5
2808: PPUSH
2809: LD_VAR 0 4
2813: PPUSH
2814: LD_VAR 0 5
2818: PPUSH
2819: LD_INT 4
2821: PPUSH
2822: LD_INT 0
2824: PPUSH
2825: CALL_OW 60
// r := r - 50 ;
2829: LD_ADDR_VAR 0 7
2833: PUSH
2834: LD_VAR 0 7
2838: PUSH
2839: LD_INT 50
2841: MINUS
2842: ST_TO_ADDR
// end else
2843: GO 2887
// begin CreateResourcesXYR ( i , r div 10 , x , y , 4 , false ) ;
2845: LD_VAR 0 6
2849: PPUSH
2850: LD_VAR 0 7
2854: PUSH
2855: LD_INT 10
2857: DIV
2858: PPUSH
2859: LD_VAR 0 4
2863: PPUSH
2864: LD_VAR 0 5
2868: PPUSH
2869: LD_INT 4
2871: PPUSH
2872: LD_INT 0
2874: PPUSH
2875: CALL_OW 60
// r := 0 ;
2879: LD_ADDR_VAR 0 7
2883: PUSH
2884: LD_INT 0
2886: ST_TO_ADDR
// end ;
2887: GO 2781
// end ;
2889: GO 2762
2891: POP
2892: POP
// end ; x := start_def [ pos ] [ 1 ] ;
2893: LD_ADDR_VAR 0 4
2897: PUSH
2898: LD_EXP 47
2902: PUSH
2903: LD_VAR 0 3
2907: ARRAY
2908: PUSH
2909: LD_INT 1
2911: ARRAY
2912: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
2913: LD_ADDR_VAR 0 5
2917: PUSH
2918: LD_EXP 47
2922: PUSH
2923: LD_VAR 0 3
2927: ARRAY
2928: PUSH
2929: LD_INT 2
2931: ARRAY
2932: ST_TO_ADDR
// for r in starting_crates do
2933: LD_ADDR_VAR 0 7
2937: PUSH
2938: LD_EXP 19
2942: PUSH
2943: FOR_IN
2944: IFFALSE 2976
// CreateResourcesXYR ( mat_cans , 5 , x , y , r , false ) ;
2946: LD_INT 1
2948: PPUSH
2949: LD_INT 5
2951: PPUSH
2952: LD_VAR 0 4
2956: PPUSH
2957: LD_VAR 0 5
2961: PPUSH
2962: LD_VAR 0 7
2966: PPUSH
2967: LD_INT 0
2969: PPUSH
2970: CALL_OW 60
2974: GO 2943
2976: POP
2977: POP
// if def_morale_flags then
2978: LD_EXP 9
2982: IFFALSE 3061
// battle_flags_id := battle_flags_id ^ SetBattleFlag ( side , x , y , [ [ bfo_defend_bonus_human , 100 ] , [ bfo_defend_bonus_vehicle , 50 ] , [ bfo_defend_bonus_building , 20 ] , [ bfo_height , 100 ] ] ) ;
2984: LD_ADDR_EXP 49
2988: PUSH
2989: LD_EXP 49
2993: PUSH
2994: LD_VAR 0 1
2998: PPUSH
2999: LD_VAR 0 4
3003: PPUSH
3004: LD_VAR 0 5
3008: PPUSH
3009: LD_INT 1
3011: PUSH
3012: LD_INT 100
3014: PUSH
3015: EMPTY
3016: LIST
3017: LIST
3018: PUSH
3019: LD_INT 2
3021: PUSH
3022: LD_INT 50
3024: PUSH
3025: EMPTY
3026: LIST
3027: LIST
3028: PUSH
3029: LD_INT 3
3031: PUSH
3032: LD_INT 20
3034: PUSH
3035: EMPTY
3036: LIST
3037: LIST
3038: PUSH
3039: LD_INT 20
3041: PUSH
3042: LD_INT 100
3044: PUSH
3045: EMPTY
3046: LIST
3047: LIST
3048: PUSH
3049: EMPTY
3050: LIST
3051: LIST
3052: LIST
3053: LIST
3054: PPUSH
3055: CALL_OW 418
3059: ADD
3060: ST_TO_ADDR
// neng := number_of_people ;
3061: LD_ADDR_VAR 0 11
3065: PUSH
3066: LD_EXP 17
3070: ST_TO_ADDR
// nsol := number_of_breastworks ;
3071: LD_ADDR_VAR 0 14
3075: PUSH
3076: LD_EXP 16
3080: ST_TO_ADDR
// if nsol < neng div 4 then
3081: LD_VAR 0 14
3085: PUSH
3086: LD_VAR 0 11
3090: PUSH
3091: LD_INT 4
3093: DIV
3094: LESS
3095: IFFALSE 3111
// nsol := neng div 4 ;
3097: LD_ADDR_VAR 0 14
3101: PUSH
3102: LD_VAR 0 11
3106: PUSH
3107: LD_INT 4
3109: DIV
3110: ST_TO_ADDR
// neng := neng - nsol ;
3111: LD_ADDR_VAR 0 11
3115: PUSH
3116: LD_VAR 0 11
3120: PUSH
3121: LD_VAR 0 14
3125: MINUS
3126: ST_TO_ADDR
// nsci := neng div 3 ;
3127: LD_ADDR_VAR 0 12
3131: PUSH
3132: LD_VAR 0 11
3136: PUSH
3137: LD_INT 3
3139: DIV
3140: ST_TO_ADDR
// if nsci < 1 then
3141: LD_VAR 0 12
3145: PUSH
3146: LD_INT 1
3148: LESS
3149: IFFALSE 3159
// nsci := 1 ;
3151: LD_ADDR_VAR 0 12
3155: PUSH
3156: LD_INT 1
3158: ST_TO_ADDR
// neng := neng - nsci ;
3159: LD_ADDR_VAR 0 11
3163: PUSH
3164: LD_VAR 0 11
3168: PUSH
3169: LD_VAR 0 12
3173: MINUS
3174: ST_TO_ADDR
// nmech := neng div 2 ;
3175: LD_ADDR_VAR 0 13
3179: PUSH
3180: LD_VAR 0 11
3184: PUSH
3185: LD_INT 2
3187: DIV
3188: ST_TO_ADDR
// neng := neng - nmech ;
3189: LD_ADDR_VAR 0 11
3193: PUSH
3194: LD_VAR 0 11
3198: PUSH
3199: LD_VAR 0 13
3203: MINUS
3204: ST_TO_ADDR
// if neng < 1 then
3205: LD_VAR 0 11
3209: PUSH
3210: LD_INT 1
3212: LESS
3213: IFFALSE 3223
// neng := 1 ;
3215: LD_ADDR_VAR 0 11
3219: PUSH
3220: LD_INT 1
3222: ST_TO_ADDR
// commander := true ;
3223: LD_ADDR_EXP 51
3227: PUSH
3228: LD_INT 1
3230: ST_TO_ADDR
// soldiers_created := 0 ;
3231: LD_ADDR_LOC 3
3235: PUSH
3236: LD_INT 0
3238: ST_TO_ADDR
// for i := 1 to number_of_breastworks do
3239: LD_ADDR_VAR 0 6
3243: PUSH
3244: DOUBLE
3245: LD_INT 1
3247: DEC
3248: ST_TO_ADDR
3249: LD_EXP 16
3253: PUSH
3254: FOR_TO
3255: IFFALSE 3509
// begin x := breastworks_def [ pos ] [ i ] [ 1 ] ;
3257: LD_ADDR_VAR 0 4
3261: PUSH
3262: LD_EXP 46
3266: PUSH
3267: LD_VAR 0 3
3271: ARRAY
3272: PUSH
3273: LD_VAR 0 6
3277: ARRAY
3278: PUSH
3279: LD_INT 1
3281: ARRAY
3282: ST_TO_ADDR
// y := breastworks_def [ pos ] [ i ] [ 2 ] ;
3283: LD_ADDR_VAR 0 5
3287: PUSH
3288: LD_EXP 46
3292: PUSH
3293: LD_VAR 0 3
3297: ARRAY
3298: PUSH
3299: LD_VAR 0 6
3303: ARRAY
3304: PUSH
3305: LD_INT 2
3307: ARRAY
3308: ST_TO_ADDR
// bc_type := b_breastwork ;
3309: LD_ADDR_OWVAR 42
3313: PUSH
3314: LD_INT 31
3316: ST_TO_ADDR
// br := CreateAndPlaceBuildingXYD ( x , y , breastworks_def [ pos ] [ i ] [ 3 ] ) ;
3317: LD_ADDR_VAR 0 9
3321: PUSH
3322: LD_VAR 0 4
3326: PPUSH
3327: LD_VAR 0 5
3331: PPUSH
3332: LD_EXP 46
3336: PUSH
3337: LD_VAR 0 3
3341: ARRAY
3342: PUSH
3343: LD_VAR 0 6
3347: ARRAY
3348: PUSH
3349: LD_INT 3
3351: ARRAY
3352: PPUSH
3353: CALL_OW 47
3357: ST_TO_ADDR
// x := ShiftX ( x , breastworks_def [ pos ] [ i ] [ 3 ] , 2 ) ;
3358: LD_ADDR_VAR 0 4
3362: PUSH
3363: LD_VAR 0 4
3367: PPUSH
3368: LD_EXP 46
3372: PUSH
3373: LD_VAR 0 3
3377: ARRAY
3378: PUSH
3379: LD_VAR 0 6
3383: ARRAY
3384: PUSH
3385: LD_INT 3
3387: ARRAY
3388: PPUSH
3389: LD_INT 2
3391: PPUSH
3392: CALL_OW 272
3396: ST_TO_ADDR
// y := ShiftY ( y , breastworks_def [ pos ] [ i ] [ 3 ] , 2 ) ;
3397: LD_ADDR_VAR 0 5
3401: PUSH
3402: LD_VAR 0 5
3406: PPUSH
3407: LD_EXP 46
3411: PUSH
3412: LD_VAR 0 3
3416: ARRAY
3417: PUSH
3418: LD_VAR 0 6
3422: ARRAY
3423: PUSH
3424: LD_INT 3
3426: ARRAY
3427: PPUSH
3428: LD_INT 2
3430: PPUSH
3431: CALL_OW 273
3435: ST_TO_ADDR
// sol := prepare_people ( side , 1 , class_soldier , x , y , 1 , commander ) [ 1 ] ;
3436: LD_ADDR_VAR 0 8
3440: PUSH
3441: LD_VAR 0 1
3445: PPUSH
3446: LD_INT 1
3448: PPUSH
3449: LD_INT 1
3451: PPUSH
3452: LD_VAR 0 4
3456: PPUSH
3457: LD_VAR 0 5
3461: PPUSH
3462: LD_INT 1
3464: PPUSH
3465: LD_ADDR_EXP 51
3469: PPUSH
3470: CALL 1984 0 7
3474: PUSH
3475: LD_INT 1
3477: ARRAY
3478: ST_TO_ADDR
// soldiers_created := soldiers_created + 1 ;
3479: LD_ADDR_LOC 3
3483: PUSH
3484: LD_LOC 3
3488: PUSH
3489: LD_INT 1
3491: PLUS
3492: ST_TO_ADDR
// ComEnterUnit ( sol , br ) ;
3493: LD_VAR 0 8
3497: PPUSH
3498: LD_VAR 0 9
3502: PPUSH
3503: CALL_OW 120
// end ;
3507: GO 3254
3509: POP
3510: POP
// x := start_def [ pos ] [ 1 ] ;
3511: LD_ADDR_VAR 0 4
3515: PUSH
3516: LD_EXP 47
3520: PUSH
3521: LD_VAR 0 3
3525: ARRAY
3526: PUSH
3527: LD_INT 1
3529: ARRAY
3530: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
3531: LD_ADDR_VAR 0 5
3535: PUSH
3536: LD_EXP 47
3540: PUSH
3541: LD_VAR 0 3
3545: ARRAY
3546: PUSH
3547: LD_INT 2
3549: ARRAY
3550: ST_TO_ADDR
// prepare_people ( side , nsol - number_of_breastworks , class_soldier , x , y , 5 , commander ) ;
3551: LD_VAR 0 1
3555: PPUSH
3556: LD_VAR 0 14
3560: PUSH
3561: LD_EXP 16
3565: MINUS
3566: PPUSH
3567: LD_INT 1
3569: PPUSH
3570: LD_VAR 0 4
3574: PPUSH
3575: LD_VAR 0 5
3579: PPUSH
3580: LD_INT 5
3582: PPUSH
3583: LD_ADDR_EXP 51
3587: PPUSH
3588: CALL 1984 0 7
// prepare_people ( side , neng , class_engineer , x , y , 5 , commander ) ;
3592: LD_VAR 0 1
3596: PPUSH
3597: LD_VAR 0 11
3601: PPUSH
3602: LD_INT 2
3604: PPUSH
3605: LD_VAR 0 4
3609: PPUSH
3610: LD_VAR 0 5
3614: PPUSH
3615: LD_INT 5
3617: PPUSH
3618: LD_ADDR_EXP 51
3622: PPUSH
3623: CALL 1984 0 7
// prepare_people ( side , nmech , class_mechanic , x , y , 5 , commander ) ;
3627: LD_VAR 0 1
3631: PPUSH
3632: LD_VAR 0 13
3636: PPUSH
3637: LD_INT 3
3639: PPUSH
3640: LD_VAR 0 4
3644: PPUSH
3645: LD_VAR 0 5
3649: PPUSH
3650: LD_INT 5
3652: PPUSH
3653: LD_ADDR_EXP 51
3657: PPUSH
3658: CALL 1984 0 7
// prepare_people ( side , nsci , class_scientistic , x , y , 5 , commander ) ;
3662: LD_VAR 0 1
3666: PPUSH
3667: LD_VAR 0 12
3671: PPUSH
3672: LD_INT 4
3674: PPUSH
3675: LD_VAR 0 4
3679: PPUSH
3680: LD_VAR 0 5
3684: PPUSH
3685: LD_INT 5
3687: PPUSH
3688: LD_ADDR_EXP 51
3692: PPUSH
3693: CALL 1984 0 7
// if not global_defined then
3697: LD_LOC 2
3701: NOT
3702: IFFALSE 3712
// global_defined := true ;
3704: LD_ADDR_LOC 2
3708: PUSH
3709: LD_INT 1
3711: ST_TO_ADDR
// if def_siberite_detection then
3712: LD_EXP 10
3716: IFFALSE 3733
// SetTech ( tech_SibDet , side , state_researched ) ;
3718: LD_INT 20
3720: PPUSH
3721: LD_VAR 0 1
3725: PPUSH
3726: LD_INT 2
3728: PPUSH
3729: CALL_OW 322
// end ;
3733: LD_VAR 0 2
3737: RET
// function prepare_sides ; var i ; begin
3738: LD_INT 0
3740: PPUSH
3741: PPUSH
// global_units := [ ] ;
3742: LD_ADDR_LOC 1
3746: PUSH
3747: EMPTY
3748: ST_TO_ADDR
// global_defined := false ;
3749: LD_ADDR_LOC 2
3753: PUSH
3754: LD_INT 0
3756: ST_TO_ADDR
// for i := 1 to Side_Positions do
3757: LD_ADDR_VAR 0 2
3761: PUSH
3762: DOUBLE
3763: LD_INT 1
3765: DEC
3766: ST_TO_ADDR
3767: LD_EXP 40
3771: PUSH
3772: FOR_TO
3773: IFFALSE 3798
// if Side_Positions [ i ] then
3775: LD_EXP 40
3779: PUSH
3780: LD_VAR 0 2
3784: ARRAY
3785: IFFALSE 3796
// prepare_side ( i ) ;
3787: LD_VAR 0 2
3791: PPUSH
3792: CALL 2481 0 1
3796: GO 3772
3798: POP
3799: POP
// end ;
3800: LD_VAR 0 1
3804: RET
// starting begin mp_selectmsg := true ;
3805: LD_ADDR_OWVAR 13
3809: PUSH
3810: LD_INT 1
3812: ST_TO_ADDR
// read_multiplayer_and_game_parameters ;
3813: CALL 412 0 0
// init_map ;
3817: CALL 0 0 0
// set_shared_visions_and_alliances ;
3821: CALL 1621 0 0
// prepare_sides ;
3825: CALL 3738 0 0
// Init_Win_Condition ;
3829: CALL 4258 0 0
// init_shipments ;
3833: CALL 5434 0 0
// init_respawn ;
3837: CALL 5938 0 0
// case Game_Type of end ;
3841: LD_EXP 1
3845: PUSH
3846: POP
// if Game_type <> 3 then
3847: LD_EXP 1
3851: PUSH
3852: LD_INT 3
3854: NONEQUAL
3855: IFFALSE 3861
// InitMultiplayerTime ;
3857: CALL 6503 0 0
// your_side := Player_Side ;
3861: LD_ADDR_OWVAR 2
3865: PUSH
3866: LD_EXP 36
3870: ST_TO_ADDR
// ResetFog ;
3871: CALL_OW 335
// music_nat := Side_Nations [ your_side ] ;
3875: LD_ADDR_OWVAR 71
3879: PUSH
3880: LD_EXP 41
3884: PUSH
3885: LD_OWVAR 2
3889: ARRAY
3890: ST_TO_ADDR
// CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
3891: LD_EXP 47
3895: PUSH
3896: LD_EXP 40
3900: PUSH
3901: LD_OWVAR 2
3905: ARRAY
3906: ARRAY
3907: PUSH
3908: LD_INT 1
3910: ARRAY
3911: PPUSH
3912: LD_EXP 47
3916: PUSH
3917: LD_EXP 40
3921: PUSH
3922: LD_OWVAR 2
3926: ARRAY
3927: ARRAY
3928: PUSH
3929: LD_INT 2
3931: ARRAY
3932: PPUSH
3933: CALL_OW 86
// backerowy_part_by_radzio ;
3937: CALL 7186 0 0
// Anticheatcheck ;
3941: CALL_OW 514
// end ; end_of_file
3945: END
// export inbuildup ; every 0 0$1 do
3946: GO 3948
3948: DISABLE
// begin CheckBuildUpArea ( Buildup1 , BuildupExit1 , [ f_type , unit_human ] ) ;
3949: LD_INT 1
3951: PPUSH
3952: LD_INT 2
3954: PPUSH
3955: LD_INT 21
3957: PUSH
3958: LD_INT 1
3960: PUSH
3961: EMPTY
3962: LIST
3963: LIST
3964: PPUSH
3965: CALL_OW 513
// CheckBuildUpArea ( Buildup1 , BuildupExit1 , [ f_type , unit_vehicle ] ) ;
3969: LD_INT 1
3971: PPUSH
3972: LD_INT 2
3974: PPUSH
3975: LD_INT 21
3977: PUSH
3978: LD_INT 2
3980: PUSH
3981: EMPTY
3982: LIST
3983: LIST
3984: PPUSH
3985: CALL_OW 513
// CheckBuildUpArea ( Buildup2 , BuildupExit2 , [ f_type , unit_human ] ) ;
3989: LD_INT 3
3991: PPUSH
3992: LD_INT 4
3994: PPUSH
3995: LD_INT 21
3997: PUSH
3998: LD_INT 1
4000: PUSH
4001: EMPTY
4002: LIST
4003: LIST
4004: PPUSH
4005: CALL_OW 513
// CheckBuildUpArea ( Buildup2 , BuildupExit2 , [ f_type , unit_vehicle ] ) ;
4009: LD_INT 3
4011: PPUSH
4012: LD_INT 4
4014: PPUSH
4015: LD_INT 21
4017: PUSH
4018: LD_INT 2
4020: PUSH
4021: EMPTY
4022: LIST
4023: LIST
4024: PPUSH
4025: CALL_OW 513
// CheckBuildUpArea ( Buildup3 , BuildupExit3 , [ f_type , unit_human ] ) ;
4029: LD_INT 5
4031: PPUSH
4032: LD_INT 6
4034: PPUSH
4035: LD_INT 21
4037: PUSH
4038: LD_INT 1
4040: PUSH
4041: EMPTY
4042: LIST
4043: LIST
4044: PPUSH
4045: CALL_OW 513
// CheckBuildUpArea ( Buildup3 , BuildupExit3 , [ f_type , unit_vehicle ] ) ;
4049: LD_INT 5
4051: PPUSH
4052: LD_INT 6
4054: PPUSH
4055: LD_INT 21
4057: PUSH
4058: LD_INT 2
4060: PUSH
4061: EMPTY
4062: LIST
4063: LIST
4064: PPUSH
4065: CALL_OW 513
// if inbuildup then
4069: LD_EXP 52
4073: IFFALSE 4076
// enable ;
4075: ENABLE
// end ;
4076: END
// every 5 5$00 trigger def_builduptime = 1 do
4077: LD_EXP 33
4081: PUSH
4082: LD_INT 1
4084: EQUAL
4085: IFFALSE 4098
4087: GO 4089
4089: DISABLE
// begin inbuildup := false ;
4090: LD_ADDR_EXP 52
4094: PUSH
4095: LD_INT 0
4097: ST_TO_ADDR
// end ;
4098: END
// every 10 10$00 trigger def_builduptime = 2 do
4099: LD_EXP 33
4103: PUSH
4104: LD_INT 2
4106: EQUAL
4107: IFFALSE 4120
4109: GO 4111
4111: DISABLE
// begin inbuildup := false ;
4112: LD_ADDR_EXP 52
4116: PUSH
4117: LD_INT 0
4119: ST_TO_ADDR
// end ;
4120: END
// every 15 15$00 trigger def_builduptime = 3 do
4121: LD_EXP 33
4125: PUSH
4126: LD_INT 3
4128: EQUAL
4129: IFFALSE 4142
4131: GO 4133
4133: DISABLE
// begin inbuildup := false ;
4134: LD_ADDR_EXP 52
4138: PUSH
4139: LD_INT 0
4141: ST_TO_ADDR
// end ;
4142: END
// every 2 2$0 do
4143: GO 4145
4145: DISABLE
// begin Anticheatcheck ;
4146: CALL_OW 514
// enable ;
4150: ENABLE
// end ; end_of_file
4151: END
// export function DisplayNames ; var i ; begin
4152: LD_INT 0
4154: PPUSH
4155: PPUSH
// for i in FilterAllUnits ( [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ) do
4156: LD_ADDR_VAR 0 2
4160: PUSH
4161: LD_INT 2
4163: PUSH
4164: LD_INT 30
4166: PUSH
4167: LD_INT 0
4169: PUSH
4170: EMPTY
4171: LIST
4172: LIST
4173: PUSH
4174: LD_INT 30
4176: PUSH
4177: LD_INT 1
4179: PUSH
4180: EMPTY
4181: LIST
4182: LIST
4183: PUSH
4184: EMPTY
4185: LIST
4186: LIST
4187: LIST
4188: PPUSH
4189: CALL_OW 69
4193: PUSH
4194: FOR_IN
4195: IFFALSE 4222
// SetBName ( i , @ & GetSide ( i ) ) ;
4197: LD_VAR 0 2
4201: PPUSH
4202: LD_STRING @
4204: PUSH
4205: LD_VAR 0 2
4209: PPUSH
4210: CALL_OW 255
4214: STR
4215: PPUSH
4216: CALL_OW 500
4220: GO 4194
4222: POP
4223: POP
// end ;
4224: LD_VAR 0 1
4228: RET
// every 0 0$2 do
4229: GO 4231
4231: DISABLE
// DisplayNames ;
4232: CALL 4152 0 0
4236: END
// on BuildingComplete ( b ) do DisplayNames ;
4237: CALL 4152 0 0
4241: PPOPN 1
4243: END
// on BuildingStarted ( b , h ) do DisplayNames ;
4244: CALL 4152 0 0
4248: PPOPN 2
4250: END
// on BuildingCaptured ( b , o , e ) do DisplayNames ; end_of_file
4251: CALL 4152 0 0
4255: PPOPN 3
4257: END
// export function Init_Win_Condition ; begin
4258: LD_INT 0
4260: PPUSH
// if Team_Game then
4261: LD_EXP 44
4265: IFFALSE 4272
// enable ( 98 ) else
4267: LD_INT 98
4269: ENABLE_MARKED
4270: GO 4275
// enable ( 99 ) ;
4272: LD_INT 99
4274: ENABLE_MARKED
// end ;
4275: LD_VAR 0 1
4279: RET
// every 0 0$2 marked 98 do var win , i ;
4280: GO 4282
4282: DISABLE
4283: LD_INT 0
4285: PPUSH
4286: PPUSH
// begin if your_side then
4287: LD_OWVAR 2
4291: IFFALSE 4499
// if not FilterAllUnits ( [ [ f_side , your_side ] , [ f_or , [ f_type , unit_human ] , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) then
4293: LD_INT 22
4295: PUSH
4296: LD_OWVAR 2
4300: PUSH
4301: EMPTY
4302: LIST
4303: LIST
4304: PUSH
4305: LD_INT 2
4307: PUSH
4308: LD_INT 21
4310: PUSH
4311: LD_INT 1
4313: PUSH
4314: EMPTY
4315: LIST
4316: LIST
4317: PUSH
4318: LD_INT 30
4320: PUSH
4321: LD_INT 0
4323: PUSH
4324: EMPTY
4325: LIST
4326: LIST
4327: PUSH
4328: LD_INT 30
4330: PUSH
4331: LD_INT 1
4333: PUSH
4334: EMPTY
4335: LIST
4336: LIST
4337: PUSH
4338: EMPTY
4339: LIST
4340: LIST
4341: LIST
4342: LIST
4343: PUSH
4344: EMPTY
4345: LIST
4346: LIST
4347: PPUSH
4348: CALL_OW 69
4352: NOT
4353: IFFALSE 4370
// begin wait ( 0 0$3 ) ;
4355: LD_INT 105
4357: PPUSH
4358: CALL_OW 67
// YouLostInMultiplayer ;
4362: CALL_OW 107
// exit ;
4366: GO 4500
// end else
4368: GO 4499
// begin win := true ;
4370: LD_ADDR_VAR 0 1
4374: PUSH
4375: LD_INT 1
4377: ST_TO_ADDR
// for i = 1 to Side_positions do
4378: LD_ADDR_VAR 0 2
4382: PUSH
4383: DOUBLE
4384: LD_INT 1
4386: DEC
4387: ST_TO_ADDR
4388: LD_EXP 40
4392: PUSH
4393: FOR_TO
4394: IFFALSE 4478
// if Side_positions [ i ] and ( i <> your_side ) and MultiplayerSideAlive ( i ) then
4396: LD_EXP 40
4400: PUSH
4401: LD_VAR 0 2
4405: ARRAY
4406: PUSH
4407: LD_VAR 0 2
4411: PUSH
4412: LD_OWVAR 2
4416: NONEQUAL
4417: AND
4418: PUSH
4419: LD_VAR 0 2
4423: PPUSH
4424: CALL_OW 108
4428: AND
4429: IFFALSE 4476
// begin if not Side_Teams [ i ] or ( Side_Teams [ i ] <> Side_Teams [ your_side ] ) then
4431: LD_EXP 38
4435: PUSH
4436: LD_VAR 0 2
4440: ARRAY
4441: NOT
4442: PUSH
4443: LD_EXP 38
4447: PUSH
4448: LD_VAR 0 2
4452: ARRAY
4453: PUSH
4454: LD_EXP 38
4458: PUSH
4459: LD_OWVAR 2
4463: ARRAY
4464: NONEQUAL
4465: OR
4466: IFFALSE 4476
// win := false ;
4468: LD_ADDR_VAR 0 1
4472: PUSH
4473: LD_INT 0
4475: ST_TO_ADDR
// end ;
4476: GO 4393
4478: POP
4479: POP
// if win then
4480: LD_VAR 0 1
4484: IFFALSE 4499
// begin wait ( 0 0$3 ) ;
4486: LD_INT 105
4488: PPUSH
4489: CALL_OW 67
// YouWinInMultiplayer ;
4493: CALL_OW 106
// exit ;
4497: GO 4500
// end ; end ; enable ;
4499: ENABLE
// end ;
4500: PPOPN 2
4502: END
// every 0 0$3 marked 99 do var win , i ;
4503: GO 4505
4505: DISABLE
4506: LD_INT 0
4508: PPUSH
4509: PPUSH
// begin if not FilterAllUnits ( [ [ f_side , your_side ] , [ f_or , [ f_type , unit_human ] , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) then
4510: LD_INT 22
4512: PUSH
4513: LD_OWVAR 2
4517: PUSH
4518: EMPTY
4519: LIST
4520: LIST
4521: PUSH
4522: LD_INT 2
4524: PUSH
4525: LD_INT 21
4527: PUSH
4528: LD_INT 1
4530: PUSH
4531: EMPTY
4532: LIST
4533: LIST
4534: PUSH
4535: LD_INT 30
4537: PUSH
4538: LD_INT 0
4540: PUSH
4541: EMPTY
4542: LIST
4543: LIST
4544: PUSH
4545: LD_INT 30
4547: PUSH
4548: LD_INT 1
4550: PUSH
4551: EMPTY
4552: LIST
4553: LIST
4554: PUSH
4555: EMPTY
4556: LIST
4557: LIST
4558: LIST
4559: LIST
4560: PUSH
4561: EMPTY
4562: LIST
4563: LIST
4564: PPUSH
4565: CALL_OW 69
4569: NOT
4570: IFFALSE 4587
// begin wait ( 0 0$3 ) ;
4572: LD_INT 105
4574: PPUSH
4575: CALL_OW 67
// YouLostInMultiplayer ;
4579: CALL_OW 107
// exit ;
4583: GO 4697
// end else
4585: GO 4696
// begin win := true ;
4587: LD_ADDR_VAR 0 1
4591: PUSH
4592: LD_INT 1
4594: ST_TO_ADDR
// for i = 1 to Side_Positions do
4595: LD_ADDR_VAR 0 2
4599: PUSH
4600: DOUBLE
4601: LD_INT 1
4603: DEC
4604: ST_TO_ADDR
4605: LD_EXP 40
4609: PUSH
4610: FOR_TO
4611: IFFALSE 4675
// if Side_Positions [ i ] and ( i <> your_side ) and MultiplayerSideAlive ( i ) then
4613: LD_EXP 40
4617: PUSH
4618: LD_VAR 0 2
4622: ARRAY
4623: PUSH
4624: LD_VAR 0 2
4628: PUSH
4629: LD_OWVAR 2
4633: NONEQUAL
4634: AND
4635: PUSH
4636: LD_VAR 0 2
4640: PPUSH
4641: CALL_OW 108
4645: AND
4646: IFFALSE 4673
// if not AlliedSides ( i , your_side ) then
4648: LD_VAR 0 2
4652: PPUSH
4653: LD_OWVAR 2
4657: PPUSH
4658: CALL 4700 0 2
4662: NOT
4663: IFFALSE 4673
// win := false ;
4665: LD_ADDR_VAR 0 1
4669: PUSH
4670: LD_INT 0
4672: ST_TO_ADDR
4673: GO 4610
4675: POP
4676: POP
// if win then
4677: LD_VAR 0 1
4681: IFFALSE 4696
// begin wait ( 0 0$3 ) ;
4683: LD_INT 105
4685: PPUSH
4686: CALL_OW 67
// YouWinInMultiplayer ;
4690: CALL_OW 106
// exit ;
4694: GO 4697
// end ; end ; enable ;
4696: ENABLE
// end ;
4697: PPOPN 2
4699: END
// function AlliedSides ( i , j ) ; var vysledek ; begin
4700: LD_INT 0
4702: PPUSH
4703: PPUSH
// vysledek := false ;
4704: LD_ADDR_VAR 0 4
4708: PUSH
4709: LD_INT 0
4711: ST_TO_ADDR
// if ( GetAttitude ( i , j ) = att_friend ) and ( GetAttitude ( j , i ) = att_friend ) and GetAlliedVictory ( i ) and GetAlliedVictory ( j ) then
4712: LD_VAR 0 1
4716: PPUSH
4717: LD_VAR 0 2
4721: PPUSH
4722: CALL_OW 81
4726: PUSH
4727: LD_INT 1
4729: EQUAL
4730: PUSH
4731: LD_VAR 0 2
4735: PPUSH
4736: LD_VAR 0 1
4740: PPUSH
4741: CALL_OW 81
4745: PUSH
4746: LD_INT 1
4748: EQUAL
4749: AND
4750: PUSH
4751: LD_VAR 0 1
4755: PPUSH
4756: CALL_OW 83
4760: AND
4761: PUSH
4762: LD_VAR 0 2
4766: PPUSH
4767: CALL_OW 83
4771: AND
4772: IFFALSE 4782
// vysledek := true ;
4774: LD_ADDR_VAR 0 4
4778: PUSH
4779: LD_INT 1
4781: ST_TO_ADDR
// result := vysledek ;
4782: LD_ADDR_VAR 0 3
4786: PUSH
4787: LD_VAR 0 4
4791: ST_TO_ADDR
// end ; end_of_file
4792: LD_VAR 0 3
4796: RET
// function apeman_init ; begin
4797: LD_INT 0
4799: PPUSH
// uc_side := 0 ;
4800: LD_ADDR_OWVAR 20
4804: PUSH
4805: LD_INT 0
4807: ST_TO_ADDR
// uc_nation := nation_nature ;
4808: LD_ADDR_OWVAR 21
4812: PUSH
4813: LD_INT 0
4815: ST_TO_ADDR
// hc_class := class_apeman ;
4816: LD_ADDR_OWVAR 28
4820: PUSH
4821: LD_INT 12
4823: ST_TO_ADDR
// hc_basic_skills := [ 3 , 5 , 2 , 4 ] ;
4824: LD_ADDR_OWVAR 30
4828: PUSH
4829: LD_INT 3
4831: PUSH
4832: LD_INT 5
4834: PUSH
4835: LD_INT 2
4837: PUSH
4838: LD_INT 4
4840: PUSH
4841: EMPTY
4842: LIST
4843: LIST
4844: LIST
4845: LIST
4846: ST_TO_ADDR
// hc_skills := [ initial_level - 1 , initial_level - 1 , initial_level - 1 , initial_level - 1 ] ;
4847: LD_ADDR_OWVAR 31
4851: PUSH
4852: LD_EXP 18
4856: PUSH
4857: LD_INT 1
4859: MINUS
4860: PUSH
4861: LD_EXP 18
4865: PUSH
4866: LD_INT 1
4868: MINUS
4869: PUSH
4870: LD_EXP 18
4874: PUSH
4875: LD_INT 1
4877: MINUS
4878: PUSH
4879: LD_EXP 18
4883: PUSH
4884: LD_INT 1
4886: MINUS
4887: PUSH
4888: EMPTY
4889: LIST
4890: LIST
4891: LIST
4892: LIST
4893: ST_TO_ADDR
// hc_attr := [ 10 , 12 ] ;
4894: LD_ADDR_OWVAR 29
4898: PUSH
4899: LD_INT 10
4901: PUSH
4902: LD_INT 12
4904: PUSH
4905: EMPTY
4906: LIST
4907: LIST
4908: ST_TO_ADDR
// hc_sex := sex_male ;
4909: LD_ADDR_OWVAR 27
4913: PUSH
4914: LD_INT 1
4916: ST_TO_ADDR
// hc_importance := 0 ;
4917: LD_ADDR_OWVAR 32
4921: PUSH
4922: LD_INT 0
4924: ST_TO_ADDR
// hc_agressivity := Rand ( - 20 , 20 ) ;
4925: LD_ADDR_OWVAR 35
4929: PUSH
4930: LD_INT 20
4932: NEG
4933: PPUSH
4934: LD_INT 20
4936: PPUSH
4937: CALL_OW 12
4941: ST_TO_ADDR
// end ;
4942: LD_VAR 0 1
4946: RET
// function prepare_apemen ; var i , j , area , hex , see_it , un , ape , delay , first , d1 , d2 ; begin
4947: LD_INT 0
4949: PPUSH
4950: PPUSH
4951: PPUSH
4952: PPUSH
4953: PPUSH
4954: PPUSH
4955: PPUSH
4956: PPUSH
4957: PPUSH
4958: PPUSH
4959: PPUSH
4960: PPUSH
// if not spawning_koef_of_apemen then
4961: LD_EXP 23
4965: NOT
4966: IFFALSE 4970
// exit ;
4968: GO 5421
// delay := 4 4$0 ;
4970: LD_ADDR_VAR 0 9
4974: PUSH
4975: LD_INT 8400
4977: ST_TO_ADDR
// repeat d1 := Rand ( delay div 4 , delay ) ;
4978: LD_ADDR_VAR 0 11
4982: PUSH
4983: LD_VAR 0 9
4987: PUSH
4988: LD_INT 4
4990: DIV
4991: PPUSH
4992: LD_VAR 0 9
4996: PPUSH
4997: CALL_OW 12
5001: ST_TO_ADDR
// d2 := Rand ( 0 , delay div 4 ) ;
5002: LD_ADDR_VAR 0 12
5006: PUSH
5007: LD_INT 0
5009: PPUSH
5010: LD_VAR 0 9
5014: PUSH
5015: LD_INT 4
5017: DIV
5018: PPUSH
5019: CALL_OW 12
5023: ST_TO_ADDR
// delay := delay * spawning_koef_of_apemen div 100 ;
5024: LD_ADDR_VAR 0 9
5028: PUSH
5029: LD_VAR 0 9
5033: PUSH
5034: LD_EXP 23
5038: MUL
5039: PUSH
5040: LD_INT 100
5042: DIV
5043: ST_TO_ADDR
// first := Rand ( 1 , 2 ) ;
5044: LD_ADDR_VAR 0 10
5048: PUSH
5049: LD_INT 1
5051: PPUSH
5052: LD_INT 2
5054: PPUSH
5055: CALL_OW 12
5059: ST_TO_ADDR
// wait ( d1 ) ;
5060: LD_VAR 0 11
5064: PPUSH
5065: CALL_OW 67
// for i := 1 to 2 do
5069: LD_ADDR_VAR 0 2
5073: PUSH
5074: DOUBLE
5075: LD_INT 1
5077: DEC
5078: ST_TO_ADDR
5079: LD_INT 2
5081: PUSH
5082: FOR_TO
5083: IFFALSE 5415
// begin for j = 1 to 2 do
5085: LD_ADDR_VAR 0 3
5089: PUSH
5090: DOUBLE
5091: LD_INT 1
5093: DEC
5094: ST_TO_ADDR
5095: LD_INT 2
5097: PUSH
5098: FOR_TO
5099: IFFALSE 5392
// begin apeman_init ;
5101: CALL 4797 0 0
// ape := CreateHuman ;
5105: LD_ADDR_VAR 0 8
5109: PUSH
5110: CALL_OW 44
5114: ST_TO_ADDR
// if i = first then
5115: LD_VAR 0 2
5119: PUSH
5120: LD_VAR 0 10
5124: EQUAL
5125: IFFALSE 5192
// case j of 1 :
5127: LD_VAR 0 3
5131: PUSH
5132: LD_INT 1
5134: DOUBLE
5135: EQUAL
5136: IFTRUE 5140
5138: GO 5151
5140: POP
// area := opi1 ; 2 :
5141: LD_ADDR_VAR 0 4
5145: PUSH
5146: LD_INT 7
5148: ST_TO_ADDR
5149: GO 5190
5151: LD_INT 2
5153: DOUBLE
5154: EQUAL
5155: IFTRUE 5159
5157: GO 5170
5159: POP
// area := opi2 ; 3 :
5160: LD_ADDR_VAR 0 4
5164: PUSH
5165: LD_INT 8
5167: ST_TO_ADDR
5168: GO 5190
5170: LD_INT 3
5172: DOUBLE
5173: EQUAL
5174: IFTRUE 5178
5176: GO 5189
5178: POP
// area := opi5 ; end else
5179: LD_ADDR_VAR 0 4
5183: PUSH
5184: LD_INT 11
5186: ST_TO_ADDR
5187: GO 5190
5189: POP
5190: GO 5255
// case j of 1 :
5192: LD_VAR 0 3
5196: PUSH
5197: LD_INT 1
5199: DOUBLE
5200: EQUAL
5201: IFTRUE 5205
5203: GO 5216
5205: POP
// area := opi3 ; 2 :
5206: LD_ADDR_VAR 0 4
5210: PUSH
5211: LD_INT 9
5213: ST_TO_ADDR
5214: GO 5255
5216: LD_INT 2
5218: DOUBLE
5219: EQUAL
5220: IFTRUE 5224
5222: GO 5235
5224: POP
// area := opi4 ; 3 :
5225: LD_ADDR_VAR 0 4
5229: PUSH
5230: LD_INT 10
5232: ST_TO_ADDR
5233: GO 5255
5235: LD_INT 3
5237: DOUBLE
5238: EQUAL
5239: IFTRUE 5243
5241: GO 5254
5243: POP
// area := opi6 ; end ;
5244: LD_ADDR_VAR 0 4
5248: PUSH
5249: LD_INT 12
5251: ST_TO_ADDR
5252: GO 5255
5254: POP
// repeat hex := RandHexArea ( area , true ) ;
5255: LD_ADDR_VAR 0 5
5259: PUSH
5260: LD_VAR 0 4
5264: PPUSH
5265: LD_INT 1
5267: PPUSH
5268: CALL_OW 16
5272: ST_TO_ADDR
// see_it := false ;
5273: LD_ADDR_VAR 0 6
5277: PUSH
5278: LD_INT 0
5280: ST_TO_ADDR
// for un = 1 to 8 do
5281: LD_ADDR_VAR 0 7
5285: PUSH
5286: DOUBLE
5287: LD_INT 1
5289: DEC
5290: ST_TO_ADDR
5291: LD_INT 8
5293: PUSH
5294: FOR_TO
5295: IFFALSE 5338
// if SeeXY ( un , hex [ 1 ] , hex [ 2 ] ) then
5297: LD_VAR 0 7
5301: PPUSH
5302: LD_VAR 0 5
5306: PUSH
5307: LD_INT 1
5309: ARRAY
5310: PPUSH
5311: LD_VAR 0 5
5315: PUSH
5316: LD_INT 2
5318: ARRAY
5319: PPUSH
5320: CALL_OW 293
5324: IFFALSE 5336
// begin see_it := true ;
5326: LD_ADDR_VAR 0 6
5330: PUSH
5331: LD_INT 1
5333: ST_TO_ADDR
// break ;
5334: GO 5338
// end ;
5336: GO 5294
5338: POP
5339: POP
// if see_it then
5340: LD_VAR 0 6
5344: IFFALSE 5353
// wait ( 30 ) ;
5346: LD_INT 30
5348: PPUSH
5349: CALL_OW 67
// until not see_it ;
5353: LD_VAR 0 6
5357: NOT
5358: IFFALSE 5255
// PlaceUnitXY ( ape , hex [ 1 ] , hex [ 2 ] , false ) ;
5360: LD_VAR 0 8
5364: PPUSH
5365: LD_VAR 0 5
5369: PUSH
5370: LD_INT 1
5372: ARRAY
5373: PPUSH
5374: LD_VAR 0 5
5378: PUSH
5379: LD_INT 2
5381: ARRAY
5382: PPUSH
5383: LD_INT 0
5385: PPUSH
5386: CALL_OW 48
// end ;
5390: GO 5098
5392: POP
5393: POP
// if i = 1 then
5394: LD_VAR 0 2
5398: PUSH
5399: LD_INT 1
5401: EQUAL
5402: IFFALSE 5413
// wait ( d2 ) ;
5404: LD_VAR 0 12
5408: PPUSH
5409: CALL_OW 67
// end ;
5413: GO 5082
5415: POP
5416: POP
// until false ;
5417: LD_INT 0
5419: IFFALSE 4978
// end ;
5421: LD_VAR 0 1
5425: RET
// every 0 0$15 do
5426: GO 5428
5428: DISABLE
// begin prepare_apemen ;
5429: CALL 4947 0 0
// end ; end_of_file
5433: END
// var shipment , tictac ; export function init_shipments ; begin
5434: LD_INT 0
5436: PPUSH
// shipment := Rand ( 0 , 3 ) ;
5437: LD_ADDR_LOC 4
5441: PUSH
5442: LD_INT 0
5444: PPUSH
5445: LD_INT 3
5447: PPUSH
5448: CALL_OW 12
5452: ST_TO_ADDR
// tictac := 0 ;
5453: LD_ADDR_LOC 5
5457: PUSH
5458: LD_INT 0
5460: ST_TO_ADDR
// end ;
5461: LD_VAR 0 1
5465: RET
// every 0 0$5 + 0 0$1.1 do var d ;
5466: GO 5468
5468: DISABLE
5469: LD_INT 0
5471: PPUSH
// begin case tick of 1 .. 1 1$0 :
5472: LD_OWVAR 1
5476: PUSH
5477: LD_INT 1
5479: DOUBLE
5480: GREATEREQUAL
5481: IFFALSE 5489
5483: LD_INT 2100
5485: DOUBLE
5486: LESSEQUAL
5487: IFTRUE 5491
5489: GO 5502
5491: POP
// d := 150 ; 1 1$0 + 1 .. 5 5$0 :
5492: LD_ADDR_VAR 0 1
5496: PUSH
5497: LD_INT 150
5499: ST_TO_ADDR
5500: GO 5685
5502: LD_INT 2100
5504: PUSH
5505: LD_INT 1
5507: PLUS
5508: DOUBLE
5509: GREATEREQUAL
5510: IFFALSE 5518
5512: LD_INT 10500
5514: DOUBLE
5515: LESSEQUAL
5516: IFTRUE 5520
5518: GO 5531
5520: POP
// d := 100 ; 5 5$0 + 1 .. 10 10$0 :
5521: LD_ADDR_VAR 0 1
5525: PUSH
5526: LD_INT 100
5528: ST_TO_ADDR
5529: GO 5685
5531: LD_INT 10500
5533: PUSH
5534: LD_INT 1
5536: PLUS
5537: DOUBLE
5538: GREATEREQUAL
5539: IFFALSE 5547
5541: LD_INT 21000
5543: DOUBLE
5544: LESSEQUAL
5545: IFTRUE 5549
5547: GO 5560
5549: POP
// d := 90 ; 10 10$0 + 1 .. 20 20$0 :
5550: LD_ADDR_VAR 0 1
5554: PUSH
5555: LD_INT 90
5557: ST_TO_ADDR
5558: GO 5685
5560: LD_INT 21000
5562: PUSH
5563: LD_INT 1
5565: PLUS
5566: DOUBLE
5567: GREATEREQUAL
5568: IFFALSE 5576
5570: LD_INT 42000
5572: DOUBLE
5573: LESSEQUAL
5574: IFTRUE 5578
5576: GO 5589
5578: POP
// d := 70 ; 20 20$0 + 1 .. 30 30$0 :
5579: LD_ADDR_VAR 0 1
5583: PUSH
5584: LD_INT 70
5586: ST_TO_ADDR
5587: GO 5685
5589: LD_INT 42000
5591: PUSH
5592: LD_INT 1
5594: PLUS
5595: DOUBLE
5596: GREATEREQUAL
5597: IFFALSE 5605
5599: LD_INT 63000
5601: DOUBLE
5602: LESSEQUAL
5603: IFTRUE 5607
5605: GO 5618
5607: POP
// d := 60 ; 30 30$0 + 1 .. 50 50$0 :
5608: LD_ADDR_VAR 0 1
5612: PUSH
5613: LD_INT 60
5615: ST_TO_ADDR
5616: GO 5685
5618: LD_INT 63000
5620: PUSH
5621: LD_INT 1
5623: PLUS
5624: DOUBLE
5625: GREATEREQUAL
5626: IFFALSE 5634
5628: LD_INT 105000
5630: DOUBLE
5631: LESSEQUAL
5632: IFTRUE 5636
5634: GO 5647
5636: POP
// d := 35 ; 50 50$0 + 1 .. 300 300$0 :
5637: LD_ADDR_VAR 0 1
5641: PUSH
5642: LD_INT 35
5644: ST_TO_ADDR
5645: GO 5685
5647: LD_INT 105000
5649: PUSH
5650: LD_INT 1
5652: PLUS
5653: DOUBLE
5654: GREATEREQUAL
5655: IFFALSE 5663
5657: LD_INT 630000
5659: DOUBLE
5660: LESSEQUAL
5661: IFTRUE 5665
5663: GO 5676
5665: POP
// d := 20 ; else
5666: LD_ADDR_VAR 0 1
5670: PUSH
5671: LD_INT 20
5673: ST_TO_ADDR
5674: GO 5685
5676: POP
// d := 0 ; end ;
5677: LD_ADDR_VAR 0 1
5681: PUSH
5682: LD_INT 0
5684: ST_TO_ADDR
// if rand ( 1 , 10000 ) <= d * shipments_density then
5685: LD_INT 1
5687: PPUSH
5688: LD_INT 10000
5690: PPUSH
5691: CALL_OW 12
5695: PUSH
5696: LD_VAR 0 1
5700: PUSH
5701: LD_EXP 21
5705: MUL
5706: LESSEQUAL
5707: IFFALSE 5761
// begin wait ( Rand ( 1 , 0 0$4 ) ) ;
5709: LD_INT 1
5711: PPUSH
5712: LD_INT 140
5714: PPUSH
5715: CALL_OW 12
5719: PPUSH
5720: CALL_OW 67
// shipment := ( shipment + 1 ) mod 4 ;
5724: LD_ADDR_LOC 4
5728: PUSH
5729: LD_LOC 4
5733: PUSH
5734: LD_INT 1
5736: PLUS
5737: PUSH
5738: LD_INT 4
5740: MOD
5741: ST_TO_ADDR
// CreateCratesArea ( 5 , nw + shipment , true ) ;
5742: LD_INT 5
5744: PPUSH
5745: LD_INT 17
5747: PUSH
5748: LD_LOC 4
5752: PLUS
5753: PPUSH
5754: LD_INT 1
5756: PPUSH
5757: CALL_OW 55
// end ; enable ;
5761: ENABLE
// end ;
5762: PPOPN 1
5764: END
// every 0 0$10 trigger TICK > ( ( 3 3$0 * tictac ) + tictac * ( 1 1$30 - shipments_density * ( 0 0$2 ) ) ) do var i , amount , is_in ;
5765: LD_OWVAR 1
5769: PUSH
5770: LD_INT 6300
5772: PUSH
5773: LD_LOC 5
5777: MUL
5778: PUSH
5779: LD_LOC 5
5783: PUSH
5784: LD_INT 3150
5786: PUSH
5787: LD_EXP 21
5791: PUSH
5792: LD_INT 70
5794: MUL
5795: MINUS
5796: MUL
5797: PLUS
5798: GREATER
5799: IFFALSE 5935
5801: GO 5803
5803: DISABLE
5804: LD_INT 0
5806: PPUSH
5807: PPUSH
5808: PPUSH
// begin tictac := tictac + 1 ;
5809: LD_ADDR_LOC 5
5813: PUSH
5814: LD_LOC 5
5818: PUSH
5819: LD_INT 1
5821: PLUS
5822: ST_TO_ADDR
// amount := Rand ( 3 , 5 ) ;
5823: LD_ADDR_VAR 0 2
5827: PUSH
5828: LD_INT 3
5830: PPUSH
5831: LD_INT 5
5833: PPUSH
5834: CALL_OW 12
5838: ST_TO_ADDR
// for i = 0 to 3 do
5839: LD_ADDR_VAR 0 1
5843: PUSH
5844: DOUBLE
5845: LD_INT 0
5847: DEC
5848: ST_TO_ADDR
5849: LD_INT 3
5851: PUSH
5852: FOR_TO
5853: IFFALSE 5932
// begin is_in := GetResourceArea ( north_west + i , mat_cans ) ;
5855: LD_ADDR_VAR 0 3
5859: PUSH
5860: LD_INT 13
5862: PUSH
5863: LD_VAR 0 1
5867: PLUS
5868: PPUSH
5869: LD_INT 1
5871: PPUSH
5872: CALL_OW 287
5876: ST_TO_ADDR
// if ( is_in < 500 ) or ( Rand ( 1 , 10 ) > ( is_in div 100 ) ) then
5877: LD_VAR 0 3
5881: PUSH
5882: LD_INT 500
5884: LESS
5885: PUSH
5886: LD_INT 1
5888: PPUSH
5889: LD_INT 10
5891: PPUSH
5892: CALL_OW 12
5896: PUSH
5897: LD_VAR 0 3
5901: PUSH
5902: LD_INT 100
5904: DIV
5905: GREATER
5906: OR
5907: IFFALSE 5930
// CreateCratesArea ( amount , north_west + i , true ) ;
5909: LD_VAR 0 2
5913: PPUSH
5914: LD_INT 13
5916: PUSH
5917: LD_VAR 0 1
5921: PLUS
5922: PPUSH
5923: LD_INT 1
5925: PPUSH
5926: CALL_OW 55
// end ;
5930: GO 5852
5932: POP
5933: POP
// enable ;
5934: ENABLE
// end ; end_of_file
5935: PPOPN 3
5937: END
// var respawn_queue ; export function init_respawn ; begin
5938: LD_INT 0
5940: PPUSH
// if not def_people_respawning then
5941: LD_EXP 13
5945: NOT
5946: IFFALSE 5950
// exit ;
5948: GO 5992
// respawn_queue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
5950: LD_ADDR_LOC 6
5954: PUSH
5955: LD_INT 0
5957: PUSH
5958: LD_INT 0
5960: PUSH
5961: LD_INT 0
5963: PUSH
5964: LD_INT 0
5966: PUSH
5967: LD_INT 0
5969: PUSH
5970: LD_INT 0
5972: PUSH
5973: LD_INT 0
5975: PUSH
5976: LD_INT 0
5978: PUSH
5979: EMPTY
5980: LIST
5981: LIST
5982: LIST
5983: LIST
5984: LIST
5985: LIST
5986: LIST
5987: LIST
5988: ST_TO_ADDR
// enable ( 10 ) ;
5989: LD_INT 10
5991: ENABLE_MARKED
// end ;
5992: LD_VAR 0 1
5996: RET
// every 0 0$10 marked 10 do var un , list , time , side ;
5997: GO 5999
5999: DISABLE
6000: LD_INT 0
6002: PPUSH
6003: PPUSH
6004: PPUSH
6005: PPUSH
// begin for side = 1 to Side_Positions do
6006: LD_ADDR_VAR 0 4
6010: PUSH
6011: DOUBLE
6012: LD_INT 1
6014: DEC
6015: ST_TO_ADDR
6016: LD_EXP 40
6020: PUSH
6021: FOR_TO
6022: IFFALSE 6188
// if Side_Positions [ side ] then
6024: LD_EXP 40
6028: PUSH
6029: LD_VAR 0 4
6033: ARRAY
6034: IFFALSE 6186
// begin list := FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] , f_not , [ f_nation , nation_nature ] ] ) ;
6036: LD_ADDR_VAR 0 2
6040: PUSH
6041: LD_INT 22
6043: PUSH
6044: LD_VAR 0 4
6048: PUSH
6049: EMPTY
6050: LIST
6051: LIST
6052: PUSH
6053: LD_INT 21
6055: PUSH
6056: LD_INT 1
6058: PUSH
6059: EMPTY
6060: LIST
6061: LIST
6062: PUSH
6063: LD_INT 3
6065: PUSH
6066: LD_INT 23
6068: PUSH
6069: LD_INT 0
6071: PUSH
6072: EMPTY
6073: LIST
6074: LIST
6075: PUSH
6076: EMPTY
6077: LIST
6078: LIST
6079: LIST
6080: LIST
6081: PPUSH
6082: CALL_OW 69
6086: ST_TO_ADDR
// if ( list < number_of_people ) and ( not respawn_queue [ side ] ) then
6087: LD_VAR 0 2
6091: PUSH
6092: LD_EXP 17
6096: LESS
6097: PUSH
6098: LD_LOC 6
6102: PUSH
6103: LD_VAR 0 4
6107: ARRAY
6108: NOT
6109: AND
6110: IFFALSE 6126
// set_queue ( side , TICK ) ;
6112: LD_VAR 0 4
6116: PPUSH
6117: LD_OWVAR 1
6121: PPUSH
6122: CALL 6425 0 2
// time := TICK - respawn_queue [ side ] ;
6126: LD_ADDR_VAR 0 3
6130: PUSH
6131: LD_OWVAR 1
6135: PUSH
6136: LD_LOC 6
6140: PUSH
6141: LD_VAR 0 4
6145: ARRAY
6146: MINUS
6147: ST_TO_ADDR
// if ( respawn_queue [ side ] ) and ( time > respawning_time_min ) then
6148: LD_LOC 6
6152: PUSH
6153: LD_VAR 0 4
6157: ARRAY
6158: PUSH
6159: LD_VAR 0 3
6163: PUSH
6164: LD_EXP 25
6168: GREATER
6169: AND
6170: IFFALSE 6186
// respawn_character ( side , time ) ;
6172: LD_VAR 0 4
6176: PPUSH
6177: LD_VAR 0 3
6181: PPUSH
6182: CALL 6194 0 2
// end ;
6186: GO 6021
6188: POP
6189: POP
// enable ;
6190: ENABLE
// end ;
6191: PPOPN 4
6193: END
// function respawn_character ( side , time ) ; var dep ; begin
6194: LD_INT 0
6196: PPUSH
6197: PPUSH
// if Rand ( 0 , 1 ) and ( time < respawning_time_max ) then
6198: LD_INT 0
6200: PPUSH
6201: LD_INT 1
6203: PPUSH
6204: CALL_OW 12
6208: PUSH
6209: LD_VAR 0 2
6213: PUSH
6214: LD_EXP 26
6218: LESS
6219: AND
6220: IFFALSE 6224
// exit ;
6222: GO 6420
// dep := FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_ok ] ] ) ;
6224: LD_ADDR_VAR 0 4
6228: PUSH
6229: LD_INT 22
6231: PUSH
6232: LD_VAR 0 1
6236: PUSH
6237: EMPTY
6238: LIST
6239: LIST
6240: PUSH
6241: LD_INT 2
6243: PUSH
6244: LD_INT 30
6246: PUSH
6247: LD_INT 0
6249: PUSH
6250: EMPTY
6251: LIST
6252: LIST
6253: PUSH
6254: LD_INT 30
6256: PUSH
6257: LD_INT 1
6259: PUSH
6260: EMPTY
6261: LIST
6262: LIST
6263: PUSH
6264: EMPTY
6265: LIST
6266: LIST
6267: LIST
6268: PUSH
6269: LD_INT 50
6271: PUSH
6272: EMPTY
6273: LIST
6274: PUSH
6275: EMPTY
6276: LIST
6277: LIST
6278: LIST
6279: PPUSH
6280: CALL_OW 69
6284: ST_TO_ADDR
// if not dep then
6285: LD_VAR 0 4
6289: NOT
6290: IFFALSE 6296
// exit else
6292: GO 6420
6294: GO 6320
// dep := dep [ Rand ( 1 , dep ) ] ;
6296: LD_ADDR_VAR 0 4
6300: PUSH
6301: LD_VAR 0 4
6305: PUSH
6306: LD_INT 1
6308: PPUSH
6309: LD_VAR 0 4
6313: PPUSH
6314: CALL_OW 12
6318: ARRAY
6319: ST_TO_ADDR
// uc_side := side ;
6320: LD_ADDR_OWVAR 20
6324: PUSH
6325: LD_VAR 0 1
6329: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
6330: LD_ADDR_OWVAR 21
6334: PUSH
6335: LD_EXP 41
6339: PUSH
6340: LD_VAR 0 1
6344: ARRAY
6345: ST_TO_ADDR
// PrepareHuman ( 0 , 0 , initial_level div 2 ) ;
6346: LD_INT 0
6348: PPUSH
6349: LD_INT 0
6351: PPUSH
6352: LD_EXP 18
6356: PUSH
6357: LD_INT 2
6359: DIV
6360: PPUSH
6361: CALL_OW 380
// hc_importance := 0 ;
6365: LD_ADDR_OWVAR 32
6369: PUSH
6370: LD_INT 0
6372: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( dep ) , GetY ( dep ) , 10 , true ) ;
6373: CALL_OW 44
6377: PPUSH
6378: LD_VAR 0 4
6382: PPUSH
6383: CALL_OW 250
6387: PPUSH
6388: LD_VAR 0 4
6392: PPUSH
6393: CALL_OW 251
6397: PPUSH
6398: LD_INT 10
6400: PPUSH
6401: LD_INT 1
6403: PPUSH
6404: CALL_OW 50
// set_queue ( side , 0 ) ;
6408: LD_VAR 0 1
6412: PPUSH
6413: LD_INT 0
6415: PPUSH
6416: CALL 6425 0 2
// end ;
6420: LD_VAR 0 3
6424: RET
// function set_queue ( side , time ) ; begin
6425: LD_INT 0
6427: PPUSH
// respawn_queue := Delete ( respawn_queue , side ) ;
6428: LD_ADDR_LOC 6
6432: PUSH
6433: LD_LOC 6
6437: PPUSH
6438: LD_VAR 0 1
6442: PPUSH
6443: CALL_OW 3
6447: ST_TO_ADDR
// respawn_queue := Insert ( respawn_queue , side , time ) ;
6448: LD_ADDR_LOC 6
6452: PUSH
6453: LD_LOC 6
6457: PPUSH
6458: LD_VAR 0 1
6462: PPUSH
6463: LD_VAR 0 2
6467: PPUSH
6468: CALL_OW 2
6472: ST_TO_ADDR
// end ; end_of_file
6473: LD_VAR 0 3
6477: RET
// export MultiplayerTimeEnabled ; export function GetMultiplayerTime ; begin
6478: LD_INT 0
6480: PPUSH
// Result = [ #Multi1x1-Time , tick ] ;
6481: LD_ADDR_VAR 0 1
6485: PUSH
6486: LD_STRING #Multi1x1-Time
6488: PUSH
6489: LD_OWVAR 1
6493: PUSH
6494: EMPTY
6495: LIST
6496: LIST
6497: ST_TO_ADDR
// end ;
6498: LD_VAR 0 1
6502: RET
// export function InitMultiplayerTime ; begin
6503: LD_INT 0
6505: PPUSH
// MultiplayerTimeEnabled := true ;
6506: LD_ADDR_EXP 53
6510: PUSH
6511: LD_INT 1
6513: ST_TO_ADDR
// display_strings = GetMultiplayerTime ;
6514: LD_ADDR_OWVAR 47
6518: PUSH
6519: CALL 6478 0 0
6523: ST_TO_ADDR
// end ;
6524: LD_VAR 0 1
6528: RET
// every 0 0$1 + 0 0$0.1 trigger MultiplayerTimeEnabled do
6529: LD_EXP 53
6533: IFFALSE 6549
6535: GO 6537
6537: DISABLE
// begin display_strings = GetMultiplayerTime ;
6538: LD_ADDR_OWVAR 47
6542: PUSH
6543: CALL 6478 0 0
6547: ST_TO_ADDR
// enable ;
6548: ENABLE
// end ; end_of_file
6549: END
// function tiger_init ; begin
6550: LD_INT 0
6552: PPUSH
// uc_side := 0 ;
6553: LD_ADDR_OWVAR 20
6557: PUSH
6558: LD_INT 0
6560: ST_TO_ADDR
// uc_nation := nation_nature ;
6561: LD_ADDR_OWVAR 21
6565: PUSH
6566: LD_INT 0
6568: ST_TO_ADDR
// hc_class := class_tiger ;
6569: LD_ADDR_OWVAR 28
6573: PUSH
6574: LD_INT 14
6576: ST_TO_ADDR
// hc_basic_skills := [ 7 , 5 , 2 , 4 ] ;
6577: LD_ADDR_OWVAR 30
6581: PUSH
6582: LD_INT 7
6584: PUSH
6585: LD_INT 5
6587: PUSH
6588: LD_INT 2
6590: PUSH
6591: LD_INT 4
6593: PUSH
6594: EMPTY
6595: LIST
6596: LIST
6597: LIST
6598: LIST
6599: ST_TO_ADDR
// hc_skills := [ initial_level - 1 , initial_level - 1 , initial_level - 1 , initial_level - 1 ] ;
6600: LD_ADDR_OWVAR 31
6604: PUSH
6605: LD_EXP 18
6609: PUSH
6610: LD_INT 1
6612: MINUS
6613: PUSH
6614: LD_EXP 18
6618: PUSH
6619: LD_INT 1
6621: MINUS
6622: PUSH
6623: LD_EXP 18
6627: PUSH
6628: LD_INT 1
6630: MINUS
6631: PUSH
6632: LD_EXP 18
6636: PUSH
6637: LD_INT 1
6639: MINUS
6640: PUSH
6641: EMPTY
6642: LIST
6643: LIST
6644: LIST
6645: LIST
6646: ST_TO_ADDR
// hc_attr := [ 10 , 12 ] ;
6647: LD_ADDR_OWVAR 29
6651: PUSH
6652: LD_INT 10
6654: PUSH
6655: LD_INT 12
6657: PUSH
6658: EMPTY
6659: LIST
6660: LIST
6661: ST_TO_ADDR
// hc_sex := sex_male ;
6662: LD_ADDR_OWVAR 27
6666: PUSH
6667: LD_INT 1
6669: ST_TO_ADDR
// hc_importance := 0 ;
6670: LD_ADDR_OWVAR 32
6674: PUSH
6675: LD_INT 0
6677: ST_TO_ADDR
// hc_agressivity := Rand ( 20 , 40 ) ;
6678: LD_ADDR_OWVAR 35
6682: PUSH
6683: LD_INT 20
6685: PPUSH
6686: LD_INT 40
6688: PPUSH
6689: CALL_OW 12
6693: ST_TO_ADDR
// end ;
6694: LD_VAR 0 1
6698: RET
// function prepare_tiger ; var i , j , area , hex , see_it , un , tiger , delay , first , d1 , d2 ; begin
6699: LD_INT 0
6701: PPUSH
6702: PPUSH
6703: PPUSH
6704: PPUSH
6705: PPUSH
6706: PPUSH
6707: PPUSH
6708: PPUSH
6709: PPUSH
6710: PPUSH
6711: PPUSH
6712: PPUSH
// if not spawning_koef_of_tiger then
6713: LD_EXP 24
6717: NOT
6718: IFFALSE 6722
// exit ;
6720: GO 7173
// delay := 4 4$0 ;
6722: LD_ADDR_VAR 0 9
6726: PUSH
6727: LD_INT 8400
6729: ST_TO_ADDR
// repeat d1 := Rand ( delay div 4 , delay ) ;
6730: LD_ADDR_VAR 0 11
6734: PUSH
6735: LD_VAR 0 9
6739: PUSH
6740: LD_INT 4
6742: DIV
6743: PPUSH
6744: LD_VAR 0 9
6748: PPUSH
6749: CALL_OW 12
6753: ST_TO_ADDR
// d2 := Rand ( 0 , delay div 4 ) ;
6754: LD_ADDR_VAR 0 12
6758: PUSH
6759: LD_INT 0
6761: PPUSH
6762: LD_VAR 0 9
6766: PUSH
6767: LD_INT 4
6769: DIV
6770: PPUSH
6771: CALL_OW 12
6775: ST_TO_ADDR
// delay := delay * spawning_koef_of_tiger div 100 ;
6776: LD_ADDR_VAR 0 9
6780: PUSH
6781: LD_VAR 0 9
6785: PUSH
6786: LD_EXP 24
6790: MUL
6791: PUSH
6792: LD_INT 100
6794: DIV
6795: ST_TO_ADDR
// first := Rand ( 1 , 2 ) ;
6796: LD_ADDR_VAR 0 10
6800: PUSH
6801: LD_INT 1
6803: PPUSH
6804: LD_INT 2
6806: PPUSH
6807: CALL_OW 12
6811: ST_TO_ADDR
// wait ( d1 ) ;
6812: LD_VAR 0 11
6816: PPUSH
6817: CALL_OW 67
// for i := 1 to 2 do
6821: LD_ADDR_VAR 0 2
6825: PUSH
6826: DOUBLE
6827: LD_INT 1
6829: DEC
6830: ST_TO_ADDR
6831: LD_INT 2
6833: PUSH
6834: FOR_TO
6835: IFFALSE 7167
// begin for j = 1 to 2 do
6837: LD_ADDR_VAR 0 3
6841: PUSH
6842: DOUBLE
6843: LD_INT 1
6845: DEC
6846: ST_TO_ADDR
6847: LD_INT 2
6849: PUSH
6850: FOR_TO
6851: IFFALSE 7144
// begin tiger_init ;
6853: CALL 6550 0 0
// tiger := CreateHuman ;
6857: LD_ADDR_VAR 0 8
6861: PUSH
6862: CALL_OW 44
6866: ST_TO_ADDR
// if i = first then
6867: LD_VAR 0 2
6871: PUSH
6872: LD_VAR 0 10
6876: EQUAL
6877: IFFALSE 6944
// case j of 1 :
6879: LD_VAR 0 3
6883: PUSH
6884: LD_INT 1
6886: DOUBLE
6887: EQUAL
6888: IFTRUE 6892
6890: GO 6903
6892: POP
// area := opi1 ; 2 :
6893: LD_ADDR_VAR 0 4
6897: PUSH
6898: LD_INT 7
6900: ST_TO_ADDR
6901: GO 6942
6903: LD_INT 2
6905: DOUBLE
6906: EQUAL
6907: IFTRUE 6911
6909: GO 6922
6911: POP
// area := opi2 ; 3 :
6912: LD_ADDR_VAR 0 4
6916: PUSH
6917: LD_INT 8
6919: ST_TO_ADDR
6920: GO 6942
6922: LD_INT 3
6924: DOUBLE
6925: EQUAL
6926: IFTRUE 6930
6928: GO 6941
6930: POP
// area := opi5 ; end else
6931: LD_ADDR_VAR 0 4
6935: PUSH
6936: LD_INT 11
6938: ST_TO_ADDR
6939: GO 6942
6941: POP
6942: GO 7007
// case j of 1 :
6944: LD_VAR 0 3
6948: PUSH
6949: LD_INT 1
6951: DOUBLE
6952: EQUAL
6953: IFTRUE 6957
6955: GO 6968
6957: POP
// area := opi3 ; 2 :
6958: LD_ADDR_VAR 0 4
6962: PUSH
6963: LD_INT 9
6965: ST_TO_ADDR
6966: GO 7007
6968: LD_INT 2
6970: DOUBLE
6971: EQUAL
6972: IFTRUE 6976
6974: GO 6987
6976: POP
// area := opi4 ; 3 :
6977: LD_ADDR_VAR 0 4
6981: PUSH
6982: LD_INT 10
6984: ST_TO_ADDR
6985: GO 7007
6987: LD_INT 3
6989: DOUBLE
6990: EQUAL
6991: IFTRUE 6995
6993: GO 7006
6995: POP
// area := opi6 ; end ;
6996: LD_ADDR_VAR 0 4
7000: PUSH
7001: LD_INT 12
7003: ST_TO_ADDR
7004: GO 7007
7006: POP
// repeat hex := RandHexArea ( area , true ) ;
7007: LD_ADDR_VAR 0 5
7011: PUSH
7012: LD_VAR 0 4
7016: PPUSH
7017: LD_INT 1
7019: PPUSH
7020: CALL_OW 16
7024: ST_TO_ADDR
// see_it := false ;
7025: LD_ADDR_VAR 0 6
7029: PUSH
7030: LD_INT 0
7032: ST_TO_ADDR
// for un = 1 to 8 do
7033: LD_ADDR_VAR 0 7
7037: PUSH
7038: DOUBLE
7039: LD_INT 1
7041: DEC
7042: ST_TO_ADDR
7043: LD_INT 8
7045: PUSH
7046: FOR_TO
7047: IFFALSE 7090
// if SeeXY ( un , hex [ 1 ] , hex [ 2 ] ) then
7049: LD_VAR 0 7
7053: PPUSH
7054: LD_VAR 0 5
7058: PUSH
7059: LD_INT 1
7061: ARRAY
7062: PPUSH
7063: LD_VAR 0 5
7067: PUSH
7068: LD_INT 2
7070: ARRAY
7071: PPUSH
7072: CALL_OW 293
7076: IFFALSE 7088
// begin see_it := true ;
7078: LD_ADDR_VAR 0 6
7082: PUSH
7083: LD_INT 1
7085: ST_TO_ADDR
// break ;
7086: GO 7090
// end ;
7088: GO 7046
7090: POP
7091: POP
// if see_it then
7092: LD_VAR 0 6
7096: IFFALSE 7105
// wait ( 30 ) ;
7098: LD_INT 30
7100: PPUSH
7101: CALL_OW 67
// until not see_it ;
7105: LD_VAR 0 6
7109: NOT
7110: IFFALSE 7007
// PlaceUnitXY ( tiger , hex [ 1 ] , hex [ 2 ] , true ) ;
7112: LD_VAR 0 8
7116: PPUSH
7117: LD_VAR 0 5
7121: PUSH
7122: LD_INT 1
7124: ARRAY
7125: PPUSH
7126: LD_VAR 0 5
7130: PUSH
7131: LD_INT 2
7133: ARRAY
7134: PPUSH
7135: LD_INT 1
7137: PPUSH
7138: CALL_OW 48
// end ;
7142: GO 6850
7144: POP
7145: POP
// if i = 1 then
7146: LD_VAR 0 2
7150: PUSH
7151: LD_INT 1
7153: EQUAL
7154: IFFALSE 7165
// wait ( d2 ) ;
7156: LD_VAR 0 12
7160: PPUSH
7161: CALL_OW 67
// end ;
7165: GO 6834
7167: POP
7168: POP
// until false ;
7169: LD_INT 0
7171: IFFALSE 6730
// end ;
7173: LD_VAR 0 1
7177: RET
// every 0 0$15 do
7178: GO 7180
7180: DISABLE
// begin prepare_tiger ;
7181: CALL 6699 0 0
// end ; end_of_file
7185: END
// export def_game_speed ; export function backerowy_part_by_radzio ; begin
7186: LD_INT 0
7188: PPUSH
// if MultiPlayer then
7189: LD_OWVAR 4
7193: IFFALSE 7255
// begin def_game_speed = GetMultiplayerSetting ( 21 ) ;
7195: LD_ADDR_EXP 54
7199: PUSH
7200: LD_INT 21
7202: PPUSH
7203: CALL_OW 426
7207: ST_TO_ADDR
// game_speed = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] [ def_game_speed + 1 ] ;
7208: LD_ADDR_OWVAR 65
7212: PUSH
7213: LD_INT 1
7215: PUSH
7216: LD_INT 2
7218: PUSH
7219: LD_INT 3
7221: PUSH
7222: LD_INT 4
7224: PUSH
7225: LD_INT 5
7227: PUSH
7228: LD_INT 6
7230: PUSH
7231: LD_INT 7
7233: PUSH
7234: EMPTY
7235: LIST
7236: LIST
7237: LIST
7238: LIST
7239: LIST
7240: LIST
7241: LIST
7242: PUSH
7243: LD_EXP 54
7247: PUSH
7248: LD_INT 1
7250: PLUS
7251: ARRAY
7252: ST_TO_ADDR
// end else
7253: GO 7263
// begin game_speed = 6 ;
7255: LD_ADDR_OWVAR 65
7259: PUSH
7260: LD_INT 6
7262: ST_TO_ADDR
// end ; end ;
7263: LD_VAR 0 1
7267: RET
